2012-10-24 8 views
9

Aggiungere Fragments al mio Activity in modo dinamico in base all'interazione dell'utente. Quando premo il tasto Indietro, i frammenti vengono estratti. Tuttavia, quando premo il tasto Indietro per il frammento che è stato prima aggiunto allo stack, la 'Attività' mostra un layout vuoto. Vorrei che l'attività chiamasse `finish() 'a questo punto e scomparisse. Ho provato:Gestire il tasto Indietro quando viene estratto l'ultimo frammento

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    super.onKeyDown(keyCode, event); 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
     if(getFragmentManager().getBackStackEntryCount()==0){ 
      finish(); 
      return true; 
     } 
    } 
    return true; 
} 

Ma questo ha l'effetto di bloccare la funzionalità del tasto Indietro. Ogni suggerimento nella giusta direzione è apprezzato.

risposta

5

Modificare il secondo return true; a return false; per indicare che NON si è gestito il tasto. Questo dovrebbe chiudere l'attività quando il back stack è vuoto e lasciarlo come è altrimenti.

+0

Grazie. Questo e getBackStackEntryCount() == 1 ha fatto il trucco. –

6

Dove stai aggiungendo il tuo primo frammento? Non aggiungere quella transazione al back stack, dovrebbe funzionare nel modo desiderato.

+0

semplice ed efficace. funziona esattamente come volevo. Grazie! – MrMaffen

Problemi correlati