Ответ 1
Используйте this.getClass().getSimpleName()
, чтобы получить имя Activity.
Из комментариев, если вы находитесь в контексте OnClickListener
(или другого внутреннего класса), укажите класс вручную:
MainActivity.class.getSimpleName()
Я хотел бы получить имя текущего Activity
для отправки в URI HttpRequest
. Есть ли способ сделать это, не обращаясь конкретно к Activity
?
Я знаю, что могу сделать myActivity.class.toString()
, но это всего лишь менее эффективный способ жесткого кодирования "myActivity", поскольку я статирую ссылку на мой Activity
. Есть ли более общий способ сделать это, используя что-то вроде 'this' (какой btw на самом деле не работает здесь, потому что он возвращает больше информации, чем желаемый).
Используйте this.getClass().getSimpleName()
, чтобы получить имя Activity.
Из комментариев, если вы находитесь в контексте 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);
Использовать простой метод
getLocalClassName().toString
это даст вам имя вашего класса