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