Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo actualizar el contenido de la ficha de fragmento en el botón de clic

Soy realmente nuevo en Android y estoy implementando un pequeño proyecto en el que tengo noticias de un sitio web de Drupal. Esta aplicación está con 3 pestañas y cada pestaña tiene una lista de artículos con contenido específico. La lista de artículos se crea mediante visualizaciones de texto y vistas de imagen organizadas en lineal. Cuando hago clic en el título, el artículo se abre con detalles. Estos artículos se cargan desde el sitio de Drupal a través del módulo HTTP POST y ViewJSON. Las fichas se crean con FragmentActivity y TabHost. Todo está bien y funciona bien hasta aquí.

Mi problema es que quiero hacer un botón de actualización, que se colocará sobre las pestañas y cuando lo presione, la lista de artículos debe actualizar o volver a cargar y mantener abierta la pestaña actual. Intenté reemplazar el contenido del fragmento de la pestaña y volver a abrirlo, pero cuando hago clic en el título de un artículo para abrirlo, el contenido de la pestaña permanece en la pila en todos los fragmentos. Menciono que cuando hago clic en el título del artículo, se abre un nuevo fragmento. Envié un id de los artículos como un argumento y en el mismo fragmento abro el contenido del artículo.

Estaba intentando con este código, pero sin éxito.

Button btn_refresh = (Button) findViewById(R.id.btn_refresh); btn_refresh.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String current_tab = mTabHost.getCurrentTabTag(); if(current_tab.contains("POPULARE")){ Fragment f; f = new PopulareActivity(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.tot,f); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit(); } if(current_tab.contains("RECOMANDATE")){ Fragment f; f = new RecomandateActivity(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.tot,f); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit(); } 

Más exactamente ingreso en la aplicación, presione Tab2 (mostrar la lista de artículos de tab2), pulse el botón de actualización, abra un artículo, presione el botón de atrás del dispositivo móvil y muéstreme el contenido de tab2. Ahora, entro en tab1 (y mostrar la lista de artículos de tab1), abre un artículo de la lista de tab1, muéstrame lo que necesito, y presiona el botón de atrás de móvil. En este momento se muestra el contenido de tab2 (la lista de artículos form tab2 de donde presioné el botón de actualización).

Para abrir los detalles de un artículo que uso:

  tv.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Fragment f; f = new DetaliiActivity(); Bundle data = new Bundle(); data.putInt("id", nid); f.setArguments(data); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.tot,f); ft.addToBackStack(null); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); } }); 

¡Gracias de antemano por la ayuda!

  • Actionbarsherlock + tabs + multi fragmentos?
  • Android: Barra de Acción
  • Actualizar / Recargar / Re instanciar un fragmento en un sistema de pestañas android
  • Las pestañas TabHost de Android roban el enfoque al utilizar el teclado de hardware
  • Cómo cambiar el estilo de pestaña en Android?
  • Actualizar Actividad actual haciendo clic en la pestaña activa
  • ¿Las pestañas anidadas con el visor de desplazamiento en android?
  • Barra de Acción Sherlock con botones
  • 2 Solutions collect form web for “Cómo actualizar el contenido de la ficha de fragmento en el botón de clic”

    Para actualizar el contenido de un fragmento, puede mantener una referencia al fragmento y llamar a un método público (por ejemplo) refresh() en ese fragmento. Ejemplo:

     public class ArticleTabFragmentActivity extends FragmentActivity{ private PopulareFragment populareFragment; private RecomandateFragment recomandateFragment; <code> private void bindView(){ Button btn_refresh = (Button) findViewById(R.id.btn_refresh); btn_refresh.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String current_tab = mTabHost.getCurrentTabTag(); if(current_tab.contains("POPULARE")){ populareFragment.refresh(); } else if(current_tab.contains("RECOMANDATE")){ recomandateFragment.refresh(); } }); } } public class PopulareFragment extends Fragment{ public void refresh(){ <refresh the contents of the fragment> } } <Same for other fragment> 

    Ahora, al crear el fragmento de tabulación, como el PupulareFragment, use la variable pupulareFragment para almacenar el fragmento. Por lo tanto, está disponible en el botón de actualización método onClick.

    De esta manera no está reemplazando / creando nuevos fragmentos al actualizar. Volviendo tan a tabActivity después de ir a la actividad de los detalles del artículo, trabajaría probablemente fino aswell.

     FragmentTabHost tabHost3 = (FragmentTabHost) findViewById(android.R.id.tabhost); String current_tab = tabHost3.getCurrentTabTag(); if (current_tab.equals("abc")) { ClassFragment ni = (ClassFragment) getSupportFragmentManager().findFragmentByTag("abc"); ni.refresh(); } 

    Pruebe esto, todo lo que está presente en la pestaña se ejecutará de nuevo.

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