Android
Fragment
オブジェクト
受け渡し

Fragmentにクラスを渡す方法

More than 1 year has passed since last update.

Fragment間で値を受け渡しをする場合

Bundleにセットするだけで簡単にできます。

Bundle bundle = new Bundle();

bundle.putString("hoge", "hoge");
bundle.putString("fuga", "fuga");

Fragment fragment = new Fragment();
fragment.setArguments(bundle);

//onCreateView内
Bundle bundle = getArguments();
String hoge = bundle.getString("hoge");
String fuga = bundle.getString("fuga");

ただクラスの受け渡しをしたい場合がありますよね

public class Clazz{

private String hoge;
private String fuga;
}

その方法ですが、

まず、ClazzクラスにSerializableインターフェースを実装します。

public class Clazz implements Serializable{

//略...
}

あとはClazzクラスをputSerializableでBundleにセットして渡すだけです。

Clazz clazz = new Clazz();

clazz.setHoge("hoge");
clazz.setFuga("fuga");

Bundle bundle = new Bundle();
bundle.putSerializable("CLASS", clazz);

Fragment fragment = new Fragment();
fragment.setArguments(bundle);

//取り出し onCreateView内で
Bundle bundle = getArguments();
Person person = (Person)bundle.getSerializable("CLASS");
Log.d("HOGE",String.valueOf(class.getHoge()));
Log.d("FUGA",String.valueOf(class.getFuga()));