2011-11-03 10 views
5

Quando un'app si avvia o riprende, desidero reindirizzare l'utente a una specifica "Attività" in base a una variabile impostata in "Proprietà condivise".Avviare l'app per Android con attività specifica

Per fare questo ho stava prendendo in considerazione avere un metodo che verifica la presenza variabile di stato SharedPreferences e reindirizza all'attività corretta:

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

E poi ho potuto chiamare questo metodo in ogni metodo 'onResume' per ogni attività in la mia app:

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

Ciò significa che l'utente non possa tecnicamente tornare l'ultima attività, perché quando lo chiamano, chiama onResume, e sarà reindirizzato allo stato che corrisponde con l'utente corrente.

Suppongo che questo potrebbe portare ad alcuni bug circolari però - c'è un modo migliore per farlo?

+0

Buona domanda quindi +1 –

risposta

5

Credo sia un modo normale per farlo, tranne che è possibile anche aggiungere il metodo call of finish(), se è necessario che MainActivity sia chiuso in questa situazione.

Inoltre, non dimenticare le dichiarazioni di rottura:

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 buoni punti. Grazie. inoltre, non ho abbastanza punti rep per votare ancora, altrimenti lo farei! – Asha

+0

Sì, questa domanda mi ha dato abbastanza punti Rep :) Grazie per il vostro aiuto – Asha

+1

Siete i benvenuti :) Potete anche approvare la mia risposta come corretta, per favore? – morphium

1

Si prega di assicurarsi che si sta aggiornando il valore di preferenza secondo il vostro activtiy navigazione. Ciò salverà i controlli non necessari per l'avvio dell'attività.

Problemi correlati