Сделать динамическое название - андроид



Я хотел бы получить имя текущего Activity чтобы быть отправлены вместе в URI в качестве HttpRequest. Есть ли способ сделать это, не обращаясь конкретно к Activity?



Я знаю, что могу сделать myActivity.class.toString() но это менее эффективный способ жесткого кодирования "myActivity", так как я делаю статическую ссылку на мой Activity. Есть более общий способ сделать это, используя что-то вроде 'этого' (который, кстати, не работает здесь, потому что он возвращает больше информации, чем то, что желательный.)

517   4  

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.xml file

вы найдете ваше имя пакета, т. е. "com.company.projectname"

затем: допустим ваше имя деятельность MainActivity

MainActivity.class.getCanonicalName() >output> "com.company.projectname.MainActivity"

или

MainActivity.class.getSimpleName() >output> "MainActivity"

или

MainActivity.class.getName() >output> "com.company.projectname.MainActivity"

Comments

    Ничего не найдено.