Android View onSaveInstanceState no se llama
Estoy trabajando con CustomView que extiende algunas vistas de Android como FrameLayout. En mi diseño, utilizo un ViewPager con un PagerAdapter personalizado.
El problema es que mi vista no restauró su estado cuando el fragmento se vuelve a conectar a ViewPager / Activity. Por ejemplo, tengo tres fragmentos, si paso a la última y vuelvo a la primera, el ScrollView no es donde lo dejé: está de vuelta al valor predeterminado, en la parte superior.
- Android View Pager se equivoca
- Cómo almacenar cada posición de la página viewpager en la lista de ellos?
- ¿Cómo puedo implementar la vista de cabecera + deslizar la pestaña del buscapersonas + ver paginador como la aplicación de lujo?
- El proyecto de Android Studio funciona en Lollipop pero no funciona en Kitkat
- Transición de RecyclerView a ViewPager
Sé que con un PagerAdapter, no todos los fragmentos están activos en el mismo tiempo, básicamente el juste + 1 / -1.
No puedo encontrar porqué mi View.onSaveInstanceState () no se llama, tan como onRestoreInstanceState.
- Tutorial para implementar el uso de TabHost en Android 2.2 + ViewPager y Fragmentos
- ViewPager + reciclar las vistas?
- ¿Cómo implementar el botón en ViewPager?
- Android - ViewPager Adapter, establece el elemento principal antes de que el adaptador se instancia
- Android PagerTabStrip - Eliminar espaciado
- Emita el desplazamiento WebView en NestedScrollView Android 2.3 o menos
- Problema de envoltura de contenido de Indicador TabPage de Android
- Cajón de navegación y ver paginador en la misma actividad
La respuesta fácil: es porque no estaba fijando el id a mi opinión (costumbre o no). Android no administró el onSaveInstanceState/onRestoreInstanceState
si no se ha configurado ningún identificador en la vista.
Así como mi customView estaba extendiendo la vista base, sin propiedad adicional, establecer una ID para la vista resolvió el problema y por lo que onSaveInstanceState / onRestoreInstanceState se llaman como debería.
Así que para resumir, utilice uno de este enfoque:
Desde XML
<ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" ... android:id="@+id/scrollView"> </ScrollView>
O desde Java
yourCustomView.setId(R.id.myCustomView);
Es el último caso, se agrega id estático a res / values / ids.xml <item name="myCustomView" type="id"/>
Guardar el estado por defecto
Ahora tenemos todo en su lugar para nuestra visión de salvar y restaurar su estado. Sin embargo, esto no sucederá por defecto. Si desea instancias de su vista para guardar el estado automáticamente, puede agregar esta línea al método init:
setSaveEnabled(true);
Si o no hacer esto depende de usted. Incluso si su vista no guarda el estado de forma predeterminada, los usuarios de la vista siempre pueden habilitar el estado de ahorro llamando a setSaveEnabled (true) o especificando android: saveEnabled = "true" en el layout xml.
- Cómo guardar / guardar objetos de clase personalizados en Android?
- Enlace de datos de Android con un adaptador personalizado