¿Cómo evitar la recreación de fragmentos cuando se selecciona de NavigationDrawer?
Tengo una actividad simple en la que está alojado un cajón de navegación. Una de sus entradas es un WebView, que tiene mucho que cargar (muestra Gmail, de modo que después de todos esos desagradables redireccionamientos se necesita mucho).
Me gustaría conservar el fragmento incluso cuando se producen diferentes selecciones. Pensé que estas soluciones podrían funcionar. No lo hicieron.
- Android - Navegación personalizada
- Diseño del cajón de navegación el título en la barra de herramientas no cambia
- El botón de acción flotante aparece sobre el cajón de navegación
- ¿En qué componentes de interfaz de usuario deben utilizarse los filtros y / o la clasificación?
- Nuevo ActionBarDrawerToggle cuando se utiliza AppCompatActivity
1) No volver a crear el fragmento: incluso si mWebmailFragment realmente no es nulo , onCreateView () se llama en cualquier caso.
private Fragment mWebmailFragment /*, the others */; public void selectItem(int position) { Fragment fragment = null; switch (position) { case FRAGMENT_CODE_WEBMAIL: mWebmailFragment = mWebmailFragment!=null ? mWebmailFragment : new WebmailFragment(); fragment = mWebmailFragment; break; // ... }
2) si se llama a onCreateView (), el mantenimiento del estado del objeto WebView puede funcionar. Bueno, no: depuración descubrí que savedInstanceState siempre es nulo. No sé por qué.
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); // Retain instance setRetainInstance(true); //.... // SavedState if (savedInstanceState != null) { mWebView.restoreState(savedInstanceState); } else { // do stuff } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mWebView.saveState(outState); }
- Desactivar la hamburguesa para animar las flechas
- Cambiar elementos de NavigationView cuando el usuario está registrado
- ¿Cómo utilizar el diseño de material de acción barra de navegación de cajón animación de conmutación?
- ¿Cómo agregar valor de notificación para el elemento en NavigationView para el cajón de diseño de material?
- Android Volver al primer fragmento en navigationdrawer
- Buenas prácticas: Cajón de navegación
- Desactivación del cajón de navegación, cambio de botón de inicio / indicador ascendente en fragmentos
- ¿Cómo mostrar el cajón de navegación en todas las actividades?
Creo que no has usado ocultar / mostrar correctamente. En su fragmento de transacción use add () para cargar el fragmento en lugar de replace ().
Cambia esto
final FragmentManager myFragmentManger = myContext .getSupportFragmentManager(); final FragmentTransaction myFragmentTransaction = myFragmentManger .beginTransaction(); myFragmentTransaction.replace(R.id.content, aFragment, aFragmentTag.getFragment());
a
final FragmentManager myFragmentManger = myContext .getSupportFragmentManager(); final FragmentTransaction myFragmentTransaction = myFragmentManger .beginTransaction(); myFragmentTransaction.add(R.id.content, aFragment, aFragmentTag.getFragment());
Si utiliza replace, createview () de fragmento se llamará cada vez. Trate de usar el add () como el código anterior.
- Preapproval key en Android
- Cómo establecer adb – emulador de tiempo de espera desde la línea de comandos