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


Fragmento no invoca onSaveInstanceState al pasar ViewPager?

Tengo un problema con ViewPager donde mi ListView está perdiendo su posición de desplazamiento.

El estado de ListView puede ser fácilmente almacenado y restaurado usando:

@Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frag_cool_things, container, false); AdvListView listView = (AdvListView) v.findViewById(R.id.lv0); listView.setOnItemClickListener( mOnListItemClicked ); if (null != savedInstanceState) { listView.onRestoreListViewInstanceState(savedInstanceState.getParcelable("list_state")); } mListView = listView; return v; } @Override public void onSaveInstanceState (Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable("list_state", mListView.onSaveListViewInstanceState()); } 

Sin embargo, el problema es que cuando los fragmentos son onDestroyView() se llama, pero nunca llama a onSaveInstanceState (Bundle outState) .

Rotación de la pantalla y restaura el estado de ListView muy bien, pero el deslizamiento No puedo averiguar cómo restaurar la lista correctamente.

  • Cómo hacer que los GIF animados funcionen desde Android WebView
  • Cómo iniciar la actividad desde el widget de pantalla de inicio de Android
  • Crear, almacenar e inflar diseño personalizado en tiempo de ejecución
  • Asignar el ancho a la mitad del ancho de pantalla disponible de forma declarativa
  • Haga que una cierta parte de un android-textview se alinee a la derecha
  • Android: el salto de Listview a scrollview
  • Cambiar el estilo de android MediaController
  • Obtener la posición de la imagen actual en la Galería
  • One Solution collect form web for “Fragmento no invoca onSaveInstanceState al pasar ViewPager?”

    Actualización 17/12/11:
    En realidad encontré la forma correcta de guardar el contenido de los Fragmentos. Debe utilizar FragmentStatePagerAdapter . ¡Este adaptador ahorra correctamente el estado del fragmento! 🙂

    ANTIGUO:
    Bueno, encontré una manera de hacer esto .. Por favor, comparta su opinión si usted cree que esto es un gran no no! :PAG

    Esta es mi clase FragmentBase que solucionó este problema:

     public abstract class FragmentBase extends Fragment { private boolean mInstanceAlreadySaved; private Bundle mSavedOutState; @Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (null == savedInstanceState && null != mSavedOutState) { savedInstanceState = mSavedOutState; } mInstanceAlreadySaved = false; return onCreateViewSafe(inflater, container, savedInstanceState); } @Override public void onSaveInstanceState (Bundle outState) { super.onSaveInstanceState(outState); mInstanceAlreadySaved = true; } @Override public void onStop() { if (!mInstanceAlreadySaved) { mSavedOutState = new Bundle(); onSaveInstanceState( mSavedOutState ); } super.onStop(); } public abstract View onCreateViewSafe (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.