Foros del Web » Programando para Internet » Android »

[SOLUCIONADO] Pasar valores a dos fragments con viewpager cuando cambio de tab.

Estas en el tema de Pasar valores a dos fragments con viewpager cuando cambio de tab. en el foro de Android en Foros del Web. Tengo una actividad principal con dos fragments, uno muestra la información general y el otro el mapa. Los valores de la base de datos los ...
  #1 (permalink)  
Antiguo 11/06/2016, 04:05
 
Fecha de Ingreso: mayo-2014
Mensajes: 45
Antigüedad: 9 años, 11 meses
Puntos: 0
Pasar valores a dos fragments con viewpager cuando cambio de tab.

Tengo una actividad principal con dos fragments, uno muestra la información general y el otro el mapa.
Los valores de la base de datos los recojo en el método de la actividad principal:
public void processFinish(String outlatitud,String outlongitud,String outnombre, String outimg,…){
if(viewPager.getCurrentItem() == 0) {
Arqueolog fragmentArte= (Arqueolog)viewPager.getAdapter().instantiateItem( viewPager, viewPager.getCurrentItem());
fragmentArte.recogerDatos(outnombre, outimg,…);
}else if(viewPager.getCurrentItem() == 1){
Mapa fragmentArteMapa = (Mapa)viewPager.getAdapter().instantiateItem(viewP ager, viewPager.getCurrentItem());
fragmentArteMapa.recogerDatos(outlatitud,outlongit ud,outnombre);
}
}
Y la paso a los fragments con una instancia de estos y el método recogenDatos que en los fragmens queda así:
Fragment Arqueolog:
public void recogerDatos(final String nombre, final String imagen,…){
TextView txtArteGeneral = (TextView) getActivity().findViewById(R.id.nombreArteGeneral) ;
txtArteGeneral.setText(nombre);

}
Fragment Mapa:

public void recogerDatos(final String outlatitud, final String outlongitud,final String outnombre){
TextView latPosicion= (TextView)getActivity().findViewById(R.id.textMapa Lat);
latPosicion.setText(outlatitud);
TextView lngPosicion= (TextView) getActivity().findViewById(R.id.textMapaLong);
lngPosicion.setText(outlongitud);
TextView nombrePosicion= (TextView) getActivity().findViewById(R.id.textMapaArte);
nombrePosicion.setText(outnombre);

}
El problema que tengo es que cuando entro en la actividad al ser getCurrentItem() ==0 me pasa los valores al primer fragment correctamente, pero cuando cambio de tab a getCurrentItem() ==1 no me pasa los valores al fragment del mapa.
Mi pregunta es cómo puedo hacer para que cuando cambio de tab me pase esos valores.
Gracias de antemano a quien me pueda orientar a una solución.
  #2 (permalink)  
Antiguo 14/06/2016, 10:48
Avatar de racanix  
Fecha de Ingreso: diciembre-2008
Ubicación: Morelia Mich.
Mensajes: 192
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: Pasar valores a dos fragments con viewpager cuando cambio de tab.

Código:
public void processFinish(String outlatitud,String outlongitud,String outnombre, String outimg,…){

    Arqueolog fragmentArte= (Arqueolog)viewPager.getAdapter().instantiateItem( viewPager, viewPager.getCurrentItem());
    fragmentArte.recogerDatos(outnombre, outimg,…);

   Mapa fragmentArteMapa = (Mapa)viewPager.getAdapter().instantiateItem(viewP ager, viewPager.getCurrentItem());
   fragmentArteMapa.recogerDatos(outlatitud,outlongit ud,outnombre);

}
Si necesitas pasar ambos datos a los fragment porque no remueves la condicion IF, en tu implementación al terminar
la llamada Async, unicamente va a cargar los datos del Tab seleccionado.
  #3 (permalink)  
Antiguo 15/06/2016, 04:39
 
Fecha de Ingreso: mayo-2014
Mensajes: 45
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Pasar valores a dos fragments con viewpager cuando cambio de tab.

Lo he probado y me daba error pues:
Arqueolog fragmentArte= (Arqueolog)viewPager.getAdapter().instantiateItem( viewPager, viewPager.getCurrentItem());
Y
Mapa fragmentArteMapa = (Mapa)viewPager.getAdapter().instantiateItem(viewP ager, viewPager.getCurrentItem());
Ambas instancias obtienen el mismo item (viewPager.getCurrentItem()) y da error, pero asignándole a cada instancia la posicion que le corresponde:
Arqueolog fragmentArte= (Arqueolog)viewPager.getAdapter().instantiateItem( viewPager, 0);
Y
Mapa fragmentArteMapa = (Mapa)viewPager.getAdapter().instantiateItem(viewP ager, 1);
Funciona perfectamente.
Muchas gracias por tu ayuda.

Última edición por jlopezisern; 15/06/2016 a las 07:59

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:37.