Nice programing

동적으로 활동 이름 가져 오기-Android

nicepro 2020. 11. 9. 21:01
반응형

동적으로 활동 이름 가져 오기-Android


Activity의 URI에 함께 보낼 현재의 이름을 얻고 싶습니다 HttpRequest. 특별히 언급하지 않고이를 수행 할 수있는 방법이 Activity있습니까?

나는 내가 할 수 있다는 것을 알고 myActivity.class.toString()있지만 이것은 내 .NET에 대한 정적 참조를 만들고 있기 때문에 "myActivity"를 하드 코딩하는 덜 효율적인 방법입니다 Activity. 'this'(원하는 것보다 더 많은 정보를 반환하기 때문에 실제로 여기서 작동하지 않는 btw)와 같은 것을 사용하여 이것을 수행하는 더 일반적인 방법이 있습니까?


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 파일 열기

패키지 이름을 찾을 수 있습니다. "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"

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"
}

참고 URL : https://stackoverflow.com/questions/10628152/get-activity-name-dynamically-android

반응형