5

Ho un ActionBar nella mia app per Android (Livello 14 API). C'è un pulsante Home con l'icona della mia app. In MainActivity scrivo un breve testo in una vista EditText. Quando navigo in PreferenceActivity l'icona riceve una freccia per segnalarmi, posso navigare a Home Activity (MainActivity).Android: fare clic sull'icona di ActionBar, creare una nuova istanza di attività

// PreferenceActivity-onCreate 
    ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 

clicco su quel icona dell'applicazione in ActionBar per tornare a MainActivity

// PreferenceActivity 
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case android.R.id.home: 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

Ora la mia MainActivity è stato creato di nuovo und il testo in EditText è andato. Pensavo di poter mantenere in vita MainActivity con die Intent.FLAG_ACTIVITY_CLEAR_TOP. Voglio avere un comportamento come io uso il mio pulsante di ritorno sul dispositivo.

risposta

7

Se si desidera tornare a un'istanza esistente di MainActivity, è necessario fare questo:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Utilizzando CLEAR_TOP da solo provoca una nuova istanza di MainActivity da creare.

+0

In questo modo non funziona. Ma quando scrivo 2 addFlags, funziona bene. \t \t \t intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); \t \t \t intent.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP); – Gepro

+0

Ah ... mi dispiace, hai bisogno di un singolo "|" e non "||" tra le 2 bandiere. Colpa mia. Vuoi un ** bit * OR, non un ** logico ** OR. Ho modificato la mia risposta. –

+0

Giusto, ho notato che – Gepro

Problemi correlati