Ho un elenco di programmi che avvia la modalità di azione. Sto usando actionbarsherlock. Ma quando l'orientamento cambia, o quando inizio una nuova attività, la barra di azione contestuale scompare. C'è un modo per ripristinarlo, senza avviarlo di nuovo? Nell'app google gmail rimane sullo schermo sia che ruoti il telefono sia che vada alla schermata dei dettagli.Restore ActionMode dopo il cambio di orientamento
risposta
Il modo migliore è utilizzare onSaveInstanceState per salvare lo stato ActionMode prima della rotazione.
public abstract class MyActivity extends SherlockFragmentActivity{
private boolean isInActionMode = false;
@Override
public void onCreate(Bundle state){
super.onCreate(state);
if (state != null && state.getBoolean("ActionMode", false)){
startActionMode(new MyActionMode());
}else{
///whatever you'd normally do
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
// Save isInActionMode value
outState.putBoolean("ActionMode", isInActionMode);
super.onSaveInstanceState(outState);
}
public void onWhateverEventNormallyStartsYourActionMode(){
startActionMode(new MyActionMode());
}
public class MyActionMode implements ActionMode.Callback{
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
isInActionMode = true;
///whatever you'd normally do
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
///whatever you'd normally do
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
///whatever you'd normally do
}
@Override
public void onDestroyActionMode(ActionMode mode) {
isInActionMode = false;
}
}
}
Aggiornato secondo il commento di Saran.
Dovrebbe inserire 'isInActionMode = true;' solo in 'onCreateActionMode()' altrimenti la prossima rotazione non raccoglierà lo stato . – Saran
Questo in realtà non ripristina la modalità di azione. Lo ricrea di nuovo. Quindi è necessario ricreare il titolo della modalità di azione e ripetere tutte le selezioni degli elementi. – faizal
Ovviamente. È necessario salvare lo stato dei dati dinamici (ad esempio le selezioni) e ripristinarli successivamente. – galex
- 1. Richiesta di autorizzazione duplicata dopo il cambio di orientamento
- 2. getActivity() nel frammento è nullo dopo il cambio di orientamento
- 3. showSoftInput non funziona dopo il cambio di orientamento
- 4. Cambio di orientamento in Honeycomb
- 5. Il frammento saveInstanceState viene considerato nullo dopo il cambio di orientamento
- 6. cambio locale Android nel cambio di orientamento
- 7. Il contenuto della scheda rimane visibile dopo aver modificato la scheda dopo il cambio di orientamento
- 8. UIPopOversamento e cambio di orientamento
- 9. ViewPager + FragmentStatePagerAdapter + cambio di orientamento
- 10. cambio orientamento senza chiamata onCreate
- 11. Frammenti Android ricreati sul cambio di orientamento
- 12. Il campo ora di Android TimePicker scompare dopo il cambio di orientamento
- 13. Salvataggio di un backstack attraverso il cambio di orientamento
- 14. Modifiche di Autoapprendimento programmatico all'interno di UITableViewCell aggiornate solo dopo il cambio di orientamento
- 15. Richiamata DialogFragment sul cambio di orientamento
- 16. Rileva cambio di orientamento in iframe
- 17. Dialoghi di autorizzazioni multiple in Android utilizzando Accedi con Google dopo il cambio di orientamento
- 18. Modifica intento raggruppa i dati prima che un'attività venga ricreata dopo il cambio di orientamento
- 19. Android: notifyDataSetChanged() non sta aggiornando listview dopo il cambio di orientamento
- 20. Come ricaricare i frammenti nel backstack dopo il cambio di orientamento
- 21. iPhone SDK: come attivare drawRect sulla sottoclasse UIView dopo il cambio di orientamento?
- 22. FragmentPagerAdapter non ricrea frammenti sul cambio di orientamento?
- 23. Le mie visualizzazioni vengono ripristinate sul cambio di orientamento
- 24. Salvataggio di alcuni dati sul cambio di orientamento in Android
- 25. Verifica/simulazione di un cambio di orientamento in Chrome?
- 26. Seconda istanza di attività dopo il cambiamento di orientamento
- 27. Come adattarsi allo schermo dopo aver cambiato la larghezza della vista sul cambio di orientamento?
- 28. Implementazione evento cambio di orientamento da jquery mobile nell'intervallo telefonico
- 29. L'applicazione Android si riavvia al cambio di orientamento
- 30. Rileva cambio di orientamento su Metro IE10 con JavaScript
controlla questa discussione in abs: https://github.com/JakeWharton/ActionBarSherlock/issues/463 – newbyca