【Android】Fragmentにオブジェクトを渡す
FragmentにStringやintを渡すだけなら
下記のようにBundleにセットするだけで簡単にできます。
Bundle bundle = new Bundle(); bundle.putString("Name", "nanasi_san"); bundle.putInt("Age", 21); Fragment fragment = new Fragment(); fragment.setArguments(bundle); //onCreateView内 Bundle bundle = getArguments(); String name = bundle.getString("Name"); int age = bundle.getInt("Age");
ここでは名前と年齢の情報を渡していますが
次のようにPersonクラスのオブジェクトとしてまとめてそれを渡したいですよね。
public class Person{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
その方法ですが、
まず、PersonクラスにSerializableインターフェースを実装します。
public class Person implements Serializable{ //略... }
あとはPersonクラスをputSerializableでBundleにセットして渡すだけです。
Person person = new Person(); person.setName("nanasi_san"); person.setAge(21); Bundle bundle = new Bundle(); bundle.putSerializable("PERSON", person); Fragment fragment = new Fragment(); fragment.setArguments(bundle); //取り出し onCreateView内で Bundle bundle = getArguments(); Person person = (Person)bundle.getSerializable("PERSON"); Log.d("NAME",person.getName()); Log.d("AGE",String.valueOf(person.getAge()));
まとめ
・渡したいクラスでSerializableインターフェースを実装する
・putSerializableでBundleにセットする