Сделать динамическое название - андроид
Я хотел бы получить имя текущего Activity чтобы быть отправлены вместе в URI в качестве HttpRequest. Есть ли способ сделать это, не обращаясь конкретно к Activity?
Я знаю, что могу сделать myActivity.class.toString() но это менее эффективный способ жесткого кодирования "myActivity", так как я делаю статическую ссылку на мой Activity. Есть более общий способ сделать это, используя что-то вроде 'этого' (который, кстати, не работает здесь, потому что он возвращает больше информации, чем то, что желательный.)
4 ответов:
использовать
this.getClass().getSimpleName()чтобы получить имя действия.из комментариев, Если вы в контексте
OnClickListener(или другой внутренний класс), укажите класс вручную:
MainActivity.class.getSimpleName()
для пуристов, которые могут не захотеть использовать отражение, альтернативный способ-использовать
PackageManagerследующим образом:PackageManager packageManager = activity.getPackageManager(); try { ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0); Log.e("app", "Activity name:" + info.name); } catch (NameNotFoundException e) { e.printStackTrace(); }однако это похоже на много работы, чтобы сделать то же самое, что и
getClass().getName()(и даже неgetSimpleName()). Но я думаю, что это может быть полезно для тех, кто хочет больше информации о деятельности, чем просто имя класса.
ActivityManager am = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE); List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); this.currentActivity = taskInfo.get(0).topActivity.getClassName(); Log.i( "CURRENT Activity ", currentActivity);
первый: открыть
manifest.xmlfileвы найдете ваше имя пакета, т. е.
"com.company.projectname"затем: допустим ваше имя деятельность
MainActivityMainActivity.class.getCanonicalName() >output> "com.company.projectname.MainActivity"или
MainActivity.class.getSimpleName() >output> "MainActivity"или
MainActivity.class.getName() >output> "com.company.projectname.MainActivity"
Comments