¿Cómo transferir algunos datos a otro Fragmento?

Resuelto Eugene asked hace 54 años • 11 respuestas

¿ Cómo transferir algunos datos a otro de la misma manera para la que Fragmentse hizo ?extrasintents

Eugene avatar Jan 01 '70 08:01 Eugene
Aceptado

Usar una Bundle. He aquí un ejemplo:

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

Bundle ha incluido métodos para muchos tipos de datos. Mira esto

Luego, en su Fragment, recupere los datos (por ejemplo, en el onCreate()método) con:

Bundle bundle = this.getArguments();
if (bundle != null) {
        int myInt = bundle.getInt(key, defaultValue);
}
Pikaling avatar Aug 22 '2011 15:08 Pikaling

Para ampliar aún más la respuesta anterior, como decía Ankit, para objetos complejos es necesario implementar Serializable. Por ejemplo, para el objeto simple:

public class MyClass implements Serializable {
    private static final long serialVersionUID = -2163051469151804394L;
    private int id;
    private String created;
}

En tu FromFragment:

Bundle args = new Bundle();
args.putSerializable(TAG_MY_CLASS, myClass);
Fragment toFragment = new ToFragment();
toFragment.setArguments(args);
getFragmentManager()
    .beginTransaction()
    .replace(R.id.body, toFragment, TAG_TO_FRAGMENT)
    .addToBackStack(TAG_TO_FRAGMENT).commit();

en tu ToFragment:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

    Bundle args = getArguments();
    MyClass myClass = (MyClass) args
        .getSerializable(TAG_MY_CLASS);
mike.tihonchik avatar Jan 31 '2014 17:01 mike.tihonchik