Cómo manejar fragmentos de recarga en Android?

He creado una actividad con un pie de página personalizado que tiene 4 botones.

Código para los botones de pie onClick:

@Override public void onClick(View v) { try { switch (v.getId()) { case R.id.button1: getSupportFragmentManager() .beginTransaction() .addToBackStack(null) .replace(R.id.flcontent,Tab1) .commit(); break; case R.id.button2: getSupportFragmentManager() .beginTransaction() .addToBackStack(null) .replace(R.id.flcontent,Tab2) .commit(); break; case R.id.button3: getSupportFragmentManager() .beginTransaction() .addToBackStack(null) .replace(R.id.flcontent, Tab3) .commit(); break; case R.id.button4: getSupportFragmentManager() .beginTransaction() .addToBackStack(null) .replace(R.id.flcontent, Tab4) .commit(); break; } } catch (Exception e) { e.printStackTrace(); } } 

En el método onCreate de Tabs, hago una llamada al servidor para buscar una lista. Las diferentes pestañas tienen diferentes peticiones.

Cuando hago clic en el botón 2, Tab2 carga y así sucesivamente hasta Button4, Tab4

Por ejemplo, cuando navego de Tab1 a Tab2: Cuando hago clic en Button2, Tab1 es reemplazado por Tab2 y una nueva lista se carga. Cuando hago clic en Button1 atrás, ¿Cómo evito llamar al servidor de nuevo en Tab1?

Hay métodos de ciclo de vida de un fragmento de Android que se llama automáticamente cada vez que nuestros fragmentos son reemplazados por otro fragmento.

Utilice los métodos de ciclo de vida de actividad de fragmento adecuados de los fragmentos que actúan como una pestaña en su aplicación. por ejemplo, cuando las películas de la aplicación de tabl a tab2 se utiliza el método

 //Add the below method to your tab1 fragment @Override void onDetach (){ // write code here that would tell the server to stop loading data // you can also use onPause and onStop } 

Echa un vistazo a los métodos de ciclo de vida de los fragmentos en la documentación del desarrollador de android https://developer.android.com/guide/components/fragments.html#Creating

La mejor manera para mí es crear una clase Singleton que contenga todos los datos devueltos del servidor para todas las pestañas.

Cuando muestres digamos Tab1, deberías comprobar si hay alguna información para esta pestaña en la clase Singleton. Si hay algo, no envíe una llamada al servidor.

También puede hacerlo teniendo un contenedor de datos estáticos (lista, mapa de hash, etc.) para la información del servidor en cada una de sus clases que describen una pestaña en particular.

Yo personalmente prefiero la primera manera.

@KhizarHayat sugerencia es como mi segunda opción descrita anteriormente, pero sólo asegúrese de que los datos del servidor no se elimina una vez que el fragmento se destruye durante las transacciones.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.