Evitar / prevenir que un fragmento se refresque al cambiar las pestañas
Sé que hay un montón de preguntas sobre este tema, pero no puedo conseguir que funcione en mi aplicación. Mi problema es. Tengo una aplicación con 4 pestañas. En 3 de ellos hay un webView
. Cada vez que cambio Tabs todo el fragment
acaba de recargar. Quiero que lo vuelva a cargar. Así que cuando perdí mi conexión a Internet todavía mostrará la página que estaba abierta.
Esta es mi actividad principal:
- Android - FragmentTabHost Error "Ninguna pestaña conocida para la etiqueta null"
- No se puede mostrar 2 instancias de mi SurfaceView personalizado
- ¿Cómo se puede eliminar el relleno o margen en Tabwidget en android?
- TabHost and tabWidget icon problema
- Android Barra superior de la barra de ActionBarSherlock
public class MainActivity extends FragmentActivity { private FragmentTabHost TabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //instellingen laden final SharedPreferences settings = getSharedPreferences("Leerling", 0); //lln laden int lln = settings.getInt("lln", 0); if(lln == 0) { //alert maken AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Welkom"); alert.setMessage("Vul je LLN in:"); // EditText maken final EditText input = new EditText(this); input.setInputType(InputType.TYPE_CLASS_NUMBER); alert.setView(input); //ga knop alert.setPositiveButton("Ga", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { //String text = input.getEditableText().toString(); int lln = Integer.parseInt(input.getEditableText().toString()); SharedPreferences.Editor editor = settings.edit(); editor.putInt("lln", lln); editor.commit(); } }); //stop knop alert.setNegativeButton("Stop", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. android.os.Process.killProcess(android.os.Process.myPid()); return; } }); alert.show(); } TabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); TabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); //tab1 toevoegen TabHost.addTab(TabHost.newTabSpec("tab1").setIndicator("Rooster"), Tab1.class, null); //tab2 toevoegen TabHost.addTab(TabHost.newTabSpec("tab2").setIndicator("Pers"), Tab2.class, null); //tab3 toevoegen TabHost.addTab(TabHost.newTabSpec("tab3").setIndicator("Wijzig"), Tab3.class, null); //tab4 toevoegen TabHost.addTab(TabHost.newTabSpec("tab4").setIndicator("Extra's"), Tab4.class, null); }
Y esta es mi Tab1:
public class Tab1 extends Fragment { private Bundle webViewBundle; private WebView webViewRooster; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View View = inflater.inflate(R.layout.activity_tab1, container, false); SharedPreferences settings = getActivity().getSharedPreferences("Leerling", 0); int lln = settings.getInt("lln", 0); webViewRooster = (WebView) View.findViewById(R.id.webViewRooster); webViewRooster.setWebViewClient(new WebViewClient()); if (webViewBundle == null) { Toast.makeText(getActivity(), "geladen voor eerste x", Toast.LENGTH_SHORT).show(); webViewRooster.loadUrl("http://www.idylank.x90x.net/rooster.php?lln=" + lln); } else{ Toast.makeText(getActivity(), "tweede of meer x", Toast.LENGTH_SHORT).show(); //webViewRooster.restoreState(webViewBundle); } return View; } public void onPause() { webViewBundle = new Bundle(); webViewRooster.saveState(webViewBundle); super.onPause(); }
He intentado muchas cosas … Por favor ayuda.
- Cambiar fragmentos dentro de la pestaña
- Android manifest.xml
- Obtener una URL de pestaña desde la acción de la página (WebExtensions, Android)
- Utilización de una clase genérica para objetos múltiples (pestañas de acciónBar)
- TabLayout Tab Título del texto en minúscula
- ¿Cómo cambiar el texto de la pestaña de android en la mosca?
- Ficha que no toma el ancho completo en el dispositivo Tablet
- Cambiar el estilo de fuente en las pestañas de la barra de acción con Sherlock
Sé que es una solución loca, pero si estás tratando de dar al usuario "HTML visto por última vez" tal vez debería considerar el almacenamiento en caché el código HTML que se ha descargado con éxito y, a continuación, establecer este código HTML volver a la WebView si vuelve a fallar?
Evitar la recarga es probablemente mejor, pero en caso de que no encuentres nada más, mira este enlace para encontrar cómo tomar una copia del HTML descargado: ¿cómo obtener el contenido html desde una webview?
- Mi TVertScrollBox no quiere desplazarse por Android
- Integración de un codec a un marco multimedia de Android