Red de conocimiento informático - Material del sitio web - Cómo pasar datos entre fragmentos individuales en ViewPager y actualizar la interfaz del fragmento

Cómo pasar datos entre fragmentos individuales en ViewPager y actualizar la interfaz del fragmento

Si el Fragmento ya existe, intentar pasar argumentos a través de fragment.setArguments(bundle) resultará en una excepción:

12-02 00:14:55.375:E/AndroidRuntime(8492): java.lang. IllegalStateException: Fragmento ya activo

12-02 00:14:55.375:E/AndroidRuntime(8492): en android.support.v4.app.Fragment.setArguments(Fragment.java:548)

Mi forma habitual de actualizar un fragmento es definir un método público para el fragmento:

// Para actualizar el fragmento en ViewPager, debemos implementar un método público para el fragmento,

// y actualizado en este método.

public void updateDate(Fecha fecha) {

mDate = fecha;

mTextView.setText(mDate.toString());

}

Luego obtenga el fragmento que necesita ser actualizado y llame a este método.

Teniendo en cuenta que solo tienes 4 fragmentos, puedes intentar guardar instancias de esos 4 fragmentos en una matriz o lista en la actividad (este método es torpe).

Debe utilizar FragmentPagerAdapter, no FragmentStatePagerAdapter, para que la instancia del fragmento no se destruya cuando cambie de página en ViewPager. Puede consultar este artículo mío: Cómo actualizar y reemplazar fragmentos en ViewPager.