86

我想ActivityHttpRequest. 有没有办法做到这一点而不特别提到Activity

我知道我可以做到myActivity.class.toString(),但这只是硬编码“myActivity”的一种效率较低的方式,因为我正在对我的Activity. 有没有一种更通用的方法可以使用“this”之类的东西(顺便说一句,它实际上在这里不起作用,因为它返回的信息比预期的要多)。

4

5 回答 5

204

用于this.getClass().getSimpleName()获取 Activity 的名称。

从评论中,如果您处于OnClickListener(或其他内部类)的上下文中,请手动指定该类:

MainActivity.class.getSimpleName()

于 2012-05-16T23:40:56.253 回答
23

对于可能不想使用反射的纯粹主义者,另一种方法是使用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())。但我想这对于想要更多关于活动信息而不仅仅是类名的人来说可能很有用。

于 2013-09-10T09:49:13.707 回答
5
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);
于 2016-10-13T06:53:07.397 回答
3

第一:打开你的manifest.xml文件

你会找到你的包名,即"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"
于 2018-06-25T12:47:56.993 回答
1

对于 Xamarin

string GetActivityClassName(Activity activity) //Receiving LoginActivity
{
    //ComponentName
    activity.ComponentName; //Output: "md5101a0260d0a0e5d40a0a9009be09b0c2.LoginActivity"

    //LocalClassName
    activity.LocalClassName; //Output: "md5101a0260d0a0e5d40a0a9009be09b0c2.LoginActivity"

    //Java.Lang.Class.FromType.SimpleName
    Java.Lang.Class.FromType(activity.GetType()).SimpleName; //Output "LoginActivity"

    //Type.Name
    activity.GetType().Name; //Output "LoginActivity"
}
于 2019-03-20T08:07:49.133 回答