2011-11-03 11 views
5

Bir uygulama başlatıldığında veya devam ettiğinde, kullanıcıyı 'SharedPrefences' içinde ayarlanmış bir değişkene göre belirli bir 'Aktivite' olarak yeniden yönlendirmek isterim.Android Uygulamasını Özel Etkinlik İle Başlatın

private void launchRedirect(Context ctxt) { 

    Integer status = AppPreferences.getStatus(this); 
    Intent i = new Intent(MainActivity.this, Activity1.class); 

    switch (status) { 
    case 0: 
     i = new Intent(MainActivity.this, Activity2.class); 
    case 1: 
     i = new Intent(MainActivity.this, Activity3.class); 
    case 2: 
     i = new Intent(MainActivity.this, Activity4.class); 
    case 3: 
     i = new Intent(MainActivity.this, Activity5.class);  
    } 
    startActivity(i); 
} 

Sonra her aktivitede ait her 'onResume' yönteminde bu yöntemi diyebiliriz:

Ben SharedPreferences durum değişkeni için kontrol eder ve doğru aktiviteye yönlendirir bir yöntem olan düşündüğü Bunu yapmak için benim app:

public void onResume(Bundle savedInstanceState) { 
    launchRedirect(this); 
} 

Bu diyorlarsa, bunun onResume çağırır ve geçerli kullanıcı ile karşılık devlete yönlendirilecektir çünkü kullanıcı teknik olarak, son Aktivitesi geri gidemez anlamına gelir.

Bunun bazı döngüsel hatalara yol açabileceğini varsayalım - bunun daha iyi bir yolu var mı?

+0

İyi bir Soru çok iyi bir şekilde +1 –

cevap

5

Bunu yapmak için normal bir yol olduğuna inanıyorum, ancak bu durumda kapatılacak olan MainActivity öğesine ihtiyacınız varsa, finish() yönteminin çağrısını da ekleyebilirsiniz. Ayrıca

, kırılma ifadeleri unutma:

private void launchRedirect(Context ctxt) { 

    Integer status = AppPreferences.getStatus(this); 
    Intent i = new Intent(MainActivity.this, Activity1.class); 

    switch (status) { 
    case 0: 
    i = new Intent(MainActivity.this, Activity2.class); 
    break; 
    case 1: 
    i = new Intent(MainActivity.this, Activity3.class); 
    break; 
    case 2: 
    i = new Intent(MainActivity.this, Activity4.class); 
    break; 
    case 3: 
    i = new Intent(MainActivity.this, Activity5.class); 
    break; 
    } 
    startActivity(i); 
    if (/* check if MainActivity should be closed */) { 
    finish(); 
    } 
} 
+1

ah iyi puan. Teşekkürler. Ayrıca, henüz oy kullanacak kadar çok puanım yok, aksi takdirde olurdum! – Asha

+0

Evet, bu soru bana yeterince puan verdi :) Yardımınız için teşekkürler – Asha

+1

Çok hoş geldiniz :) Cevapımı doğru olarak onaylayabilir misiniz, lütfen? – morphium

1

navigasyon activtiy göre tercih değerinin güncellenmesi emin olun. Bu, Etkinlik lansmanı için gereksiz kontrollerinizi kurtaracaktır.