Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo conocer la actividad de llamada en android

Tengo una actividad que se llama por otras pocas actividades. Por ejemplo: Tengo Actividad1, Actividad2, Actividad3. Actividad1 llama a Activity2 y pasa el parámetro. Activity3 también llama Activity2 y pasa el parámetro.

Ahora, basándose en la actividad de llamada, Activity2 realiza alguna tarea. ¿Pero cómo sé qué actividad está llamando a Activity2 ?? ¿Puede alguien plz ayudarme?

  • Haga clic en la notificación inicia la actividad dos veces.
  • ¿Cuándo ocurre onCreateOptionsMenu en una actividad activada con ActionBar?
  • Android default launchMode de la actividad de LAUNCHER?
  • Vista previa de Android M: la actividad se recrea después de la concesión del permiso
  • Iniciar la actividad PRINCIPAL de la aplicación actual sin saber su nombre
  • ¿Cómo paso un objeto de una actividad a otra en Android?
  • Android.content.ActivityNotFoundException:
  • Servicio automático llamado en la actividad de destrucción
  • 6 Solutions collect form web for “Cómo conocer la actividad de llamada en android”

    A. Si puede utilizar startActivityForResult

    Según la respuesta de Zain Ali a continuación: Si puede iniciar Actividad con startActivityForResult (), puede obtener el nombre de la clase de actividad de llamada por this.getCallingActivity (). GetClassName ();

    B. Si no puede utilizar startActivityForResult

    Si no puede utilizar startActivityForResult (), puede utilizar el método siguiente: Puede pasar parámetros adicionales en intención, comprobar el valor en actividad y actuar en consecuencia.

    1) Definir una interfaz o una clase de constantes para definir constantes enteras para indicar la actividad de la llamada

    public interface ActivityConstants { public static final int ACTIVITY_1 = 1001; public static final int ACTIVITY_2 = 1002; public static final int ACTIVITY_3 = 1003; } 

    2) Agregue parámetro extra en intención mientras llama a Activity2.

      Intent act2 = new Intent(context, Activity2.class); act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1); // or ActivityConstants.ACTIVITY_3 if called form Activity3 startActivity(act2); 

    3) Compruebe el valor de este parámetro extra en Activity2 y actúe en consecuencia.

     int callingActivity = getIntent().getIntExtra("calling-activity", 0); switch (callingActivity) { case ActivityConstants.ACTIVITY_1: // Activity2 is started from Activity1 break; case ActivityConstants.ACTIVITY_3: // Activity2 is started from Activity3 break; } 

    Si inicia la actividad con startActivityForResult(Intent, int) , entonces puede obtener la actividad de llamada por getCallingActivity().getClassName() .

    En su actividad de llamada (FirstActivity):

     Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.putExtra("classFrom", FirstActivity.class.toString()); startActivity(i); 

    Y agrega el siguiente código en el onCreate de la actividad llamada (SecondActivity):

     Bundle bundle = getIntent().getExtras(); if (bundle.getString("classFrom").equals(FirstActivity.class.toString())) { //Do some task } 

    Observe que debe tener cuidado porque el objeto de paquete no puede ser nulo cuando realiza "b.getString (" classFrom ")".

    Puede pasar un parámetro adicional que especifique la Activity llamada.

    Utilizo correctamente: (Actividad) .getLocalClassName ()

    Pase cualquier cosa (String / int etc.) a putExtra y base en que haga su trabajo como

     Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("PARENT_ACTIVITY_REF", "ParentActivityIsA"); startActivity(intent); 

    Y luego recibir en el niño como

     String parentActivityRef = intent.getStringExtra("PARENT_ACTIVITY_REF"); 

    entonces

     if (parentActivityRef.equals("ParentActivityIsA"){ // do your work here }else if ...{ // ... }else{ //... } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.