2011-11-14 27 views
38

2 aktivitem var: Activity1 ve Activity2. Bu etkinliklerin her birinde beni üçüncü bir etkinliğe götüren bir düğme var (MainActivity). MainActivity'da hangi etkinlik sayfasından arandığını bilmek istiyorum.Android Önceki yazıya git

+4

bunu niyet üzerine koyabilir miyim? –

+0

+1 - @ variant-45 ile aynı fikirdeyseniz, arayana 'int' veya başka bir şey koyun 'Aktivite' –

+0

mainActiviteye göre niyetini belirlemek için etkinlik bayrağı ekleyin ve lütfen sevdiklerinizi kodlara koyun .. can fikrini fro yanıtı –

cevap

45

Etkinliğin adını iletmek için Niyetin putExtra özniteliğini kullanabilirsiniz.

çağrılması Aktivite,

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

Sonraki Aktivite,

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

Şimdi dize aktivitesinde Eğer o geldi hangi Etkinlik adını alacak. Başka bir etkinlikten diğerine taşıdığınızda

0

Eğer

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

aşağıda verilen etkinlik adı Pass ve

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

Ben çözebilir düşünüyorum diğer aktivitede etkinlik adını kontrol edebilirsiniz sorun

12

Sen kullanabilirsiniz:

public ComponentName getCallingActivity() 

, hangi Etkinliğin geçerli Activity numaralı telefonunuzu aradığını bilmek.

+20

Yalnızca "startActivityForResult()" ile aktivasyonu başlatırsanız çalışır değil, startActivity() '. –

5

Önceki aktiviteyi tanımlamak için putExtra() öğesini kullanın.

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

Ana Faaliyet aktivite kontrol etmek , İznimizin belirledik ve

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

:

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

Artık Lollipop cihazları için çalışmıyor. – tasomaniac

İlgili konular