Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Guardar el estado de la ficha durante el cambio de orientación

Tengo 2 lengüetas, por ejemplo Tab1 y Tab2 que se exhibe en la pantalla. Deje que las pestañas se muestren en la orientación PORTRAIT.

Tab1 muestra Activity1 y Tab2 muestra Actividad2.

Actualmente, el estado de tabulación seleccionado es Tab2. Ahora, cambio la orientación de RETRATO a PAISAJE. Al cambiar la orientación al modo PAISAJE, en lugar de mostrar Tab2, se muestra Tab1.

Básicamente, quiero guardar el estado Tab cuando hay cambio de orientación.

Para realizar el objetivo de guardar el estado de tabulación, estoy escribiendo el siguiente código:

protected void onPause() { super.onPause(); saveCurrentTabState(getSelectedTab()); } private void saveCurrentTabState(int value) { PreferenceManager.getDefaultSharedPreferences(this).edit().putInt( "tabState", value).commit(); } @Override protected void onResume() { super.onResume(); setCurrentTab(PreferenceManager.getDefaultSharedPreferences(this) .getInt("tabState", 0)); } 

Quería saber, es mi enfoque correcto o no y si el código anterior es una forma adecuada de guardar el estado de ficha en el cambio de la orientación.

  • Resultados de geocodificación sin mostrarlos en un mapa
  • API de audio de bajo nivel para Android
  • Animar la actualización de ProgressBar en Android
  • Cómo detener un dispositivo Android de ser cargado mediante programación?
  • No se puede subir la aplicación de Android al dispositivo (frascos de dexed rancio)
  • No se pudo encontrar ****. Apk + android
  • Android O casting para findViewById ya no es necesario?
  • Animación de página curl a Layouts
  • 2 Solutions collect form web for “Guardar el estado de la ficha durante el cambio de orientación”

    Ésa no es la mejor manera. Debe utilizar onRetainNonConfigurationInstance () y getLastNonConfigurationInstance () para conservar el estado entre los cambios de configuración. Esos métodos son específicamente para guardar el estado durante los cambios de configuración.

     public Object onRetainNonConfigurationInstance() { return mTabHost.getCurrentTab(); } public void onCreate() { ... Integer lastTab = (Integer) getLastNonConfigurationInstance(); if(lastTab != null) { mTabHost.setCurrentTab(lastTab); } ... } 

    Ése no es el modo que debe ser hecho … en lugar de otro uso el:

     @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("tabState", getSelectedTab()); } 

    Luego, en el método onCreate :

     public void onCreate(Bundle state){ // do the normal onCreate stuff here... then: if( state != null ){ setCurrentTab(state.getInt("tabState")); } } 

    La solución de Robby también funcionará e implicará el uso del método onRetainNonConfigurationInstance . Realmente me gusta y prefiero que el método sobre onSaveInstanceState ya que le permite guardar un objeto complejo que representa el estado de la aplicación, no sólo parcelables dentro de un Bundle .

    Entonces, ¿cuándo usar uno de los otros? Depende de los datos que necesites para guardar o restaurar el estado de la aplicación. Para cosas simples como guardar el estado de la pestaña, es casi lo mismo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.