【发布时间】:2012-06-05 21:11:25
【问题描述】:
我最近一直在使用很多Fragments,并且一直在使用两种不同的方法将对象传递给片段,但我能看到的唯一区别是,在下面的 FragmentOne 采用的方法中,对象你传入的必须实现Serializable 接口(@987654321@)。
使用其中一个有什么好处吗?
public class FragmentOne extends Fragment {
public static final String FRAGMENT_BUNDLE_KEY =
"com.example.FragmentOne.FRAGMENT_BUNDLE_KEY";
public static FragmentOne newInstance(SomeObject someObject) {
FragmentOne f = new FragmentOne();
Bundle args = new Bundle();
args.putSerializable(FRAGMENT_BUNDLE_KEY, someObject);
f.setArguments(args);
return f;
}
public SomeObject getSomeObject() {
return (SomeObject) getArguments().getSerializable(FRAGMENT_BUNDLE_KEY);
}
}
和
public class FragmentTwo extends Fragment {
SomeObject mSomeObject;
public static FragmentTwo newInstance(SomeObject someObject) {
FragmentTwo fragment = new FragmentTwo();
fragment.setSomeObject(someObject);
return fragment;
}
public void setSomeObject(SomeObject someObject) {
mSomeObject = someObject;
}
}
【问题讨论】:
-
另外,使用
Parcelable而不是Serlializable,除非您真的需要Serializable用于某些非Android 特定用途。Parcelable显然要快得多。 -
感谢您回答 Mark - 我觉得您链接到的其他答案与我在这里提出的问题相似但又完全不同,以使这个问题仍然有用。
-
然后也许编辑您的问题以使差异更加明显。你们每个人都想将数据传递到新创建的片段中。在我对链接到的问题的回答中,我展示了将数据传递到新创建的片段的标准模式。如果您期待更多,您需要解释“更多”是什么。
标签: android fragment android-bundle