¿Cómo transferir algunos datos a otro Fragmento?
¿ Cómo transferir algunos datos a otro de la misma manera para la que Fragment
se hizo ?extras
intents
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);
}
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);