2011-11-14 30 views
38

Mam 2 działania: Activity1 i Activity2. W każdej z tych czynności znajduje się przycisk, który prowadzi mnie do trzeciej czynności (MainActivity). W MainActivity chcę wiedzieć, od której strony została wywołana strona.Android uzyskać poprzednią aktywność

+4

można umieścić go na intencji? –

+0

+1 - zgadzam się z @ variant-45, wstaw "int" lub cokolwiek innego jako flagę od osoby dzwoniącej "Activity" –

+0

Dodaj flagę aktywności, aby zidentyfikować, a nie umieścić zamiar na mainActivity i proszę, kochanie, włóż kod w ques .. więc każdy może pomysł na odpowiedź –

Odpowiedz

45

Możesz użyć atrybutu putExtra intencji, aby przekazać nazwę działania.

Wywołanie aktywny,

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

Następny aktywny,

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

Teraz w działalności strun otrzymasz nazwę z których aktywność ma on przyszedł.

0

Podczas przenoszenia od jednej czynności do drugiej można podać nazwę aktywności, jak podano poniżej

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

i sprawdzić nazwę aktywności w drugiej działalności

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

myślę, że można to rozwiązać swoje problem

12

można użyć:

public ComponentName getCallingActivity() 

, aby dowiedzieć się, która aktywność nazywa się Twoim aktualnym numerem Activity.

+20

Działa tylko wtedy, gdy aktywujesz akcję za pomocą 'startActivityForResult()' , a nie 'startActivity()'. –

5

Użyj funkcji putExtra(), aby zidentyfikować poprzednie działanie.

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

Aby sprawdzić aktywność w działalności Głównego

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

i musimy ustawić uprawnienia:

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

Nie działa już dla powyższych urządzeń Lollipop. – tasomaniac

Powiązane problemy