2014-05-05 3 views
17

Ho un'applicazione che richiama un'attività diverse volte da diverse attività. Quindi, sto cercando di implementare il "pulsante Indietro" nella barra delle azioni per questa attività. Per fare questo im utilizzando:Come impostare più attività principali per l'utilizzo del pulsante Indietro di Android

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

e:

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

Il problema ora, è che io cannt impostare un'attività genitore al mio manifesto Android, causa, non so chi è il genitore di questa attività.

Qual è la soluzione?

Grazie

risposta

31

È più facile di quanto si pensi.

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

Metodo finish() distruggerà la vostra attività e mostrare quello che ha iniziato. Questo è quello che vuoi se ti capisco bene.

La soluzione corrente è pensata per i casi in cui si desidera tornare allo stesso genitore ogni volta, ad es. L'app Gmail lo fa. Quando apri la posta elettronica dalla notifica e premi il pulsante indietro della barra delle azioni, non tornerà alla schermata HOME ma ti mostrerà la posta in arrivo di Gmail.

+2

Grazie! Ma se funziona in questo modo, non capisco perché usare: NavUtils.navigateUpFromSameTask (this); –

+2

È pensato per ciò che ho scritto nell'ultima parte della mia risposta. Le attività sono in esecuzione in attività. Se apri un'attività che appartiene a un'altra attività devi avere delle opzioni: 1. torna all'attività precedentemente visibile; questo è ciò che il pulsante indietro fa 2. torna alla precedente attività sull'attività corrente. Leggi http://developer.android.com/guide/components/tasks-and-back-stack.html per una spiegazione dettagliata. –

+0

Ughhh Sono stato catturato da qualcuno che utilizza un Google Util lucido (NavUtils.navigateUpFromSameTask (this);) ... – 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); 

} 

Si tornerà sempre all'attività da cui è stata avviata la nuova attività.

Non è necessario utilizzare il codice riportato di seguito.

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