2011-05-11 8 views

cevap

13

Çok basit: Etkinlik A'da etkinlik A.

+0

Ouch, arka ** düğmesini kullanarak A ** 'ya geri döndüğünüzde geçmişi silmek istediğinizi yanlış anladım. Ama yine de, A'ya ulaşmanın sadece iki yolu ya geri düğmesiyle ya da açık bir şekilde diğerinden aktiviteyle başlamaktır. Ancak, B veya C'den A aktivitesini başlatırken söz konusu bayrağı kullanırsanız, tarih silinir. Ve eğer sadece geri düğmesine basarsanız, tek tek de silinir, bu yüzden cevabım hala probleminizi çözmelidir. – compostus

+0

, A (Ana Sayfa) ekranına gelmek için backbutton'u kullanıyorum, bu bir anlam ifade etmiyor. – UMAR

+1

@UMAR: Yalnızca Ev almak için geri düğmesini kullanarak eğer onlardan uzak hareket ettikçe ancak, daha önceki faaliyetleri otomatik tarihten çıkarılmalıdır. Öyle değil mi? – compostus

0

başlatmak için kullanılan bir niyet üzerine intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); kullanmak bu deneyin:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){ 
       finish(); 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

Bu geri düğmesine basın eğer aktivite finish() olduğundan emin olmalıdır ed. Bu etkinlik yığının en altındaysa finish aktiviteden çıkmalıdır.

0

Kompostusun doğru olduğunu düşünüyorum, fakat eğer değilse, A'dan startActivityForResult() ile B'yi başlatabilir ve onActivityResult() da alınan "iletiyi" işleyebilir. Etkinlik B, geri düğmesine basılmışsa "CLOSE_ACTIVITY" mesajını gönderir. etkinlik C aktivitesinin bir
2. beyanında,
1. seti clearTaskOnLaunch = "true" AndroidManifest içinde:

2

Aşağıdaki yapabilirsiniz

@Override 
public void onBackPressed(){ 
    moveTaskToBack(true); 
} 

eğer öyleyse kullanıcı geri basar - bu geliyor kullanıcı yeniden uygulamayı başlatırsa ana ekrana geri dön - görev yığını temizler ve kök aktivitesine gelir (A)

+0

Bu yüzden, önerdiğiniz yukarıdaki kodu kullanırsam, en iyi etkinlikleri temizlemek için herhangi bir amaç belirlemem gerekmiyor mu? Sadece "moveTaskToBack" hepsini ele alacak? –

+0

Evet. Görevleri arka plana taşımanıza ve ana ekranı göstermenize izin verir. (Ancak bu görev için şu anda aktif olan C etkinliği var). Kullanıcı tekrar uygulamanızı başlattığında, clearTaskOnLaunch çalışır ve kök aktivitesi hariç tüm görevlerinizi kaldırır - tam o anda A aktif olur ve C yok eder. – Arseniy

+0

Bu benim için işe yaramadı, yine de yeniden başlattığınızda en son rasgele bir sayfayı veya uygulamadan çıktığım sayfayı açıyor. –

İlgili konular