Ich möchte den Namen des Stroms erhalten Activity
, der in der URI eines gesendet werden soll HttpRequest
. Gibt es eine Möglichkeit, dies zu tun, ohne sich speziell auf das zu beziehen Activity
?
Ich weiß, dass ich das kann, myActivity.class.toString()
aber dies ist nur eine weniger effiziente Methode, um "myActivity" fest zu codieren, da ich einen statischen Verweis auf meine mache Activity
. Gibt es eine allgemeinere Möglichkeit, dies mit so etwas wie "dies" zu tun (was übrigens hier nicht wirklich funktioniert, weil es mehr Informationen zurückgibt als gewünscht).
android
android-activity
introspection
evanmcdonnal
quelle
quelle
this.getClass().getSimpleName()
stattdessen verwenden?Antworten:
Verwenden Sie
this.getClass().getSimpleName()
diese Option , um den Namen der Aktivität abzurufen.Wenn Sie sich in den Kommentaren im Kontext einer
OnClickListener
(oder einer anderen inneren Klasse) befinden, geben Sie die Klasse manuell an:MainActivity.class.getSimpleName()
quelle
MainActivity::class.java.name
in Kotlin verwenden.Für Puristen da draußen, die möglicherweise keine Reflexion verwenden möchten, besteht eine alternative Möglichkeit darin,
PackageManager
Folgendes zu verwenden:PackageManager packageManager = activity.getPackageManager(); try { ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0); Log.e("app", "Activity name:" + info.name); } catch (NameNotFoundException e) { e.printStackTrace(); }
Dies scheint jedoch eine Menge Arbeit zu sein, nur um das Gleiche zu tun wie
getClass().getName()
(und nicht einmalgetSimpleName()
). Aber ich denke, es kann für jemanden nützlich sein, der mehr Informationen über die Aktivität als nur den Klassennamen möchte.quelle
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);
quelle
Erstens: Öffnen Sie Ihre
manifest.xml
DateiSie finden Ihren Paketnamen dh
"com.company.projectname"
Dann: Nehmen wir an, Ihr Aktivitätsname lautet
MainActivity
MainActivity.class.getCanonicalName() >output> "com.company.projectname.MainActivity"
ODER
MainActivity.class.getSimpleName() >output> "MainActivity"
ODER
MainActivity.class.getName() >output> "com.company.projectname.MainActivity"
quelle
Für 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" }
quelle