2011-03-29 11 views

Respuesta

40

Usted podría desea agregar extras a la intención que utiliza para iniciar la actividad para indicar de dónde proviene el intento o cuál es la solicitud.

Por ejemplo:

Intent intent = new Intent(this, OtherActivity.class); 
intent.putExtra("caller", "MainActivity"); 
startActivity(intent); 

y luego su OtherActivity podría detectar el "interlocutor" en su onCreate:

String caller  = getIntent().getStringExtra("caller"); 
Class callerClass = Class.forName(caller); 
+6

he utilizado como esta intención Intención = new Intent (esto, OtherActivity.class); intento.putExtra ("llamador", getIntent(). getComponent(). getClassName()); startActivity (intención); – Dharmendra

+4

y luego, en otra actividad, uso String className = getIntent(). GetStringExtra ("Caller") y luego Class c = Class.forName (className); así que puedo usar eso como mi actividad de destino – Dharmendra

13

Android tiene una función para que, si se utiliza startActivityForResult:

ComponentName prev = this.getCallingActivity();

+34

método 'getCallingActivity()' solo funcionará cuando haya comenzado la actividad secundaria como 'startActivityForResult'. Si va a comenzar la actividad infantil como una normal, es decir. utilizando el método 'startActivity()' then 'getCallingActivity()' se devolverá nulo. Esto se menciona en los [documentos de Android] (http://developer.android.com/reference/android/app/Activity.html#getCallingActivity()). – Dharmendra

+0

Debe editar su respuesta. – guydemossyrock

+0

esto no funciona –

1

poner un poco de extras a la intención de las actividades de diferentes diferente-

por ejemplo:

startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity")); 

y obtener extras en la actividad actual como

string act = getIntent().getStringExtra("from"); 

por lo que "actuar" se te indica la actividad de llamada.

1

Crear una Interfare Y poner valores para sus actividades, entonces pasar estos valores en intención y ponerse en Actividad de Niños echar un vistazo a esta pieza de código

public interface ActivityRefs { 
      public static final int ACTIVITY_1 = 1; 
      public static final int ACTIVITY_2 = 2; 
      public static final int ACTIVITY_3 = 3; 
} 

Crear Intención y pasar el valor de este tipo en Llamar a la actividad

intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1); 

Luego, en la actividad Llamado

int callingActivityName = getIntent().getIntExtra("callingActivity", 0); 

     switch (callingActivityName) { 
     case ActivityConstants.ACTIVITY_1: 
      // Activity3 is started from Activity1 
      break; 
     case ActivityConstants.ACTIVITY_2: 
      // Activity3 is started from Activity2 
      break; 
     } 
0

he resuelto que, en mi caso estamos en ActivityA a ActivityB luego quiere volver a ActivityA mediante programación, aquí mi código

ActivityA:

String currentActivity; 
void onCreate(...){ 
... 
currentActivity = this.getClass().getName(); 
... 
} 

Luego de su intención (todavía en ActivityA):

Intent intent = new Intent(this, ActivityA.class); 
intent.putExtra("from", currentActivity); 
startActivity(intent); 
this.finish(); 

Ahora en ActivityB:

Class fromClass; 
void onCreate(...){ 
... 
String String from = getActivity().getIntent().getStringExtra("from"); 
try { 
    fromClass = Class.forName(from); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 
... 
} 

Luego de su intención (todavía en ActivityB) para volver a ActivityA:

Intent intent = new Intent(this, fromClass); 
startActivity(intent); 
this.finish(); 
Cuestiones relacionadas