2011-11-14 15 views
38

Tengo 2 actividades: Activity1 y Activity2. En cada una de estas actividades hay un botón que me lleva a una tercera actividad (MainActivity). En MainActivity quiero saber de qué página de actividad se llamó.Android obtener actividad anterior

+4

¿Puede ponerlo en la intención? –

+0

+1 - de acuerdo con @ variant-45, ponga un 'int' o cualquier otra cosa como indicador de la persona que llama' Activity' –

+0

Agregue el indicador de actividad para identificar que poner el intento en mainActivity y por favor querido ponga el código en cuestión ... así que cualquiera puede idea por respuesta –

Respuesta

45

Puede usar el atributo putExtra de la intención para pasar el nombre de la actividad.

Calling Actividad,

Intent intent = new Intent(this, Next.class); 
intent.putExtra("activity","first"); 
startActivity(intent); 

siguiente actividad,

Intent intent = getIntent(); 
String activity = intent.getStringExtra("activity"); 

Ahora en la actividad cadena que obtendrá el nombre de la que la actividad se ha venido.

0

Al pasar de una actividad a otra puede pasar la actividad Nombre como se indica a continuación

Intent i = new Intent(this, deliveries.class); 
i.putExtra("ActivityName", "ActivityOne"); 
startActivity(i); 

y comprobar el nombre de la actividad en la otra actividad

Bundle extra = getIntent().getExtras(); 
String activityName = Long.parseLong(extra.getSerializable("ActivityName") 
toString()); 

pienso que puede resolver su problema

12

que puede utilizar:

public ComponentName getCallingActivity() 

para saber qué actividad llamó su actual Activity.

+20

Solo funciona si inicia la actividad con 'startActivityForResult()' , no 'startActivity()'. –

5

Utilice putExtra() para identificar la actividad anterior.

Intent i = new Intent(Activity1.this, MainActivity.class).putExtra("from", "activity1"); 
startActivity(i); 

Para comprobar la actividad en la actividad principal,

if(getIntent().getStringExtra("from").equals("activity1")){ 
//From Activity 1 
}else { 
// Activity 2 
} 
0
ActivityManager am = (ActivityManager) this.getSystemService(Activity.ACTIVITY_SERVICE); 
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName(); 
String className = am.getRunningTasks(1).get(0).topActivity.getClassName(); 

y hemos establecido el permiso:

<uses -permission="-permission" android:name="android.permission.GET_TASKS"> 
</uses> 
+2

Ya no funciona para los dispositivos Lollipop anteriores. – tasomaniac

Cuestiones relacionadas