studio interfaz interfaces formularios formulario form ejemplo diseño diseñar dinamico dinamica android android-activity introspection

interfaz - layout dinamico android



Obtener el nombre de la actividad de forma dinámica-Android (4)

Me gustaría que el nombre de la Activity actual se envíe junto con el URI de una HttpRequest . ¿Hay alguna manera de hacer esto sin referirse específicamente a la Activity ?

Sé que puedo hacer myActivity.class.toString() pero esta es solo una forma menos eficiente de codificar "myActivity" ya que estoy haciendo una referencia estática a mi Activity . ¿Hay una manera más general de hacer esto usando algo como ''esto'' (que por cierto no funciona aquí porque devuelve más información de la que se desea).


Para los puristas que no quieran usar el reflejo, una forma alternativa es usar el PackageManager siguiente manera:

PackageManager packageManager = activity.getPackageManager(); try { ActivityInfo info = packageManager.getActivityInfo(activity.getComponentName(), 0); Log.e("app", "Activity name:" + info.name); } catch (NameNotFoundException e) { e.printStackTrace(); }

Sin embargo, esto parece mucho trabajo para hacer lo mismo que getClass().getName() (y ni siquiera getSimpleName() ). Pero supongo que puede ser útil para alguien que quiere más información sobre la actividad que solo el nombre de la clase.


Use this.getClass().getSimpleName() para obtener el nombre de la Actividad.

De los comentarios, si está en el contexto de un OnClickListener (u otra clase interna), especifique la clase manualmente:

MainActivity.class.getSimpleName()


Primero: abra su archivo manifest.xml

encontrará el nombre de su paquete, es decir, "com.company.projectname"

Entonces: digamos que su nombre de actividad es MainActivity

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

O

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

O

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


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);