OnSaveInstanceState no funciona

El último enlace no se abre al regresar de otra pestaña y también onPause () no está funcionando. It muestra la excepción de puntero nulo y la aplicación se cierra automáticamente al hacer clic en otra pestaña excepto en la primera. Fragmento de código de pestaña

public class FragmentTab extends Fragment { protected WebView myWebView; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_layout, container, false); WebView myWebView = (WebView) v.findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return false; } }); if(savedInstanceState != null) myWebView.restoreState(savedInstanceState); else myWebView.loadUrl("http://www.example.com"); return v; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); myWebView.saveState(outState); } } 

Y aquí están las principalesActividad

 public class MainActivity extends FragmentActivity { private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent); mTabHost.addTab( mTabHost.newTabSpec("tab1").setIndicator(null,ContextCompat.getDrawable(this,R.drawable.home)), FragmentTab.class, null); mTabHost.addTab( mTabHost.newTabSpec("tab2").setIndicator(null,ContextCompat.getDrawable(this,R.drawable.deals_offers)), FragmentTab.class, null); mTabHost.addTab( mTabHost.newTabSpec("tab3").setIndicator(null,ContextCompat.getDrawable(this,R.drawable.profile)), FragmentTab.class, null); mTabHost.addTab( mTabHost.newTabSpec("tab4").setIndicator(null, ContextCompat.getDrawable(this, R.drawable.menu)), FragmentTab.class, null); } } 

Utilice esta biblioteca: https://github.com/frankiesardo/icepick

Quitar protegido de WebView

 @State WebView myWebView; // This will be automatically saved and restored 

Agregue la línea siguiente en su resto de método de la actividad será manejado.

En el método OnCreate

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); } 

En onSaveInstanceState

 @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Icepick.saveInstanceState(this, outState); } 

Parece myWebView siempre nulo en su código:

 public class FragmentTab extends Fragment { protected WebView myWebView; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_layout, container, false); myWebView = (WebView) v.findViewById(R.id.webview); // instead of WebView myWebView = (WebView) v.findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return false; } }); if(savedInstanceState != null) myWebView.restoreState(savedInstanceState); else myWebView.loadUrl("http://www.example.com"); return v; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); myWebView.saveState(outState); } } 
 @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); myWebView.saveState(savedInstanceState); } @Override public void onRestoreInstanceState(Bundle outState) { super.onRestoreInstanceState(outState); myWebView.restoreState(outState); } 

De acuerdo al código fuente.

  /** * Restores the state of this WebView from the given Bundle. This method is * intended for use in {@link android.app.Activity#onRestoreInstanceState} * and should be called to restore the state of this WebView. If * it is called after this WebView has had a chance to build state (load * pages, create a back/forward list, etc.) there may be undesirable * side-effects. Please note that this method no longer restores the * display data for this WebView. * * @param inState the incoming Bundle of state * @return the restored back/forward list or null if restoreState failed */ public WebBackForwardList restoreState(Bundle inState) { checkThread(); return mProvider.restoreState(inState); } 
  • Cómo reemplazar recursos de cadenas con Android Gradle
  • ¿Cómo puedo tener números de línea en Android Studio
  • Importar proyecto eclipse al estudio de Android - error "este proyecto se refiere al espacio de trabajo de Eclipse ..."
  • La compilación AAPT2 falló: Dimen no válido en Android 3.0 Canary 1
  • Android Studio - excepción mergeDebugResources
  • Actualización de Android Studio: algunos conflictos encontrados en el área de instalación
  • Android studio - despliegue el release apk en lugar de debug
  • ¿Es posible asignar una tecla de acceso rápido para cambiar entre la actividad y el diseño XML en Android Studio?
  • Sincronización del proyecto de Android Studio con los archivos de Gradle
  • ¿Cómo lanzar la consola 'telnet' en Android Studio Device Emulator?
  • Dependencias de Maven con Android Studio / Gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.