我最近一直在使用大量的Fragments
,并且一直在使用两种不同的方法来向Fragments传递对象,但我只看到了 FragmentOne 中采用的方法与另一个方法的区别在于你必须实现 Serializable
接口(以及所有相关内容)。
这两种方法有没有优劣之分呢?
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;
}
}
Serializable
来完成某些非Android特定的目的,否则请使用Parcelable
而不是Serializable
。显然,Parcelable
更快。 - CommonsWare