2014-05-05 21 views
17

Bir aktiviteyi farklı etkinliklerden defalarca çağıran bir uygulamam var. Yani, bu etkinlik için eylem çubuğunda "geri düğmesini" uygulamaya çalışıyorum.Android arka düğmesini kullanmak için birden çok üst düzey etkinlik nasıl ayarlanır

switch (item.getItemId()) { 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    default:   
     return super.onOptionsItemSelected(item); 
    } 

ve: kullanarak bu im yaptığım için şimdi

<meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="view.TweetsIndividuoActivity" /> 

sorun, benim android tezahür, neden bir ana faaliyeti set cannt yani ben kim olduğunu bilmiyorum bu aktivitenin ebeveyni.

Çözüm nedir?

Teşekkürler

cevap

31

Düşündüğünüzden daha kolay.

switch (item.getItemId()) { 
    case android.R.id.home: 
     finish(); 
     return true; 
    default:   
     return super.onOptionsItemSelected(item); 
} 

Yöntem finish() etkinlik yok etmek ve bunu başlatan bir tanesini gösterir. Eğer seni doğru anladıysam, istediğin buydu.

Geçerli çözüm, her defasında aynı üst öğeye geri dönmek istediğiniz durumlar içindir. Gmail uygulaması bunu yapıyor. E-postayı bildirimden açtığınızda ve ardından geri tuşuna basarsanız, tekrar HOME ekranına geri dönmez, ancak size Gmail gelen kutusunu gösterecektir.

+2

Teşekkürler! Ama eğer bu şekilde çalışırsa, neden kullanmam gerektiğini anlamıyorum: NavUtils.navigateUpFromSameTask (this); –

+2

Bu, cevabımın son bölümünde yazdığım şey için kastedildi. Faaliyetler görevlerde çalışıyor. Başka bir göreve ait bir aktiviteyi açarsanız, seçenekleriniz vardır: 1. Daha önce görülebilen etkinliğe geri dönün; Bu, geri düğmesinin yaptığı 2. şu andaki görevdeki önceki etkinliğe geri döner. Ayrıntılı açıklama için http://developer.android.com/guide/components/tasks-and-back-stack.html adresini okuyun. –

+0

Ughhh Parlak bir Google Util (NavUtils.navigateUpFromSameTask (this);) kullanan biri tarafından yakalandım. – DoctorD

6
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 

} 

Her zaman yeni etkinliği başlattığınız etkinliğe geri dönersiniz.

Aşağıdaki kodu kullanmanıza gerek yok.

<meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="view.TweetsIndividuoActivity" />