我想将数据对象传递给Fragment
,以下是两种方法:
public class MyFragment extends Fragment {
private Serializable way1;
private Serializable way2;
public void setDataWay1(Serializable way1) {
this.way1 = way1;
}
public void setDataWay2(Serializable way2) {
Bundle data = new Bundle();
data.putSerializable("data", way2);
setArguments(data);
}
}
那么,两种方式有什么区别?有时,way1可能会导致NullPointerException
,为什么?如果我想将OnClickListener
传递给Fragment
,我该怎么办?
答案 0 :(得分:2)
虽然两种方法都可以为您的片段设置适当的数据以进行首次初始化。请注意,系统将重新创建和销毁片段(例如,在屏幕旋转时)。当发生这种情况时,系统将不会真正调用setter方式(方法1)因此,它将是一个巨大的失败。因此,建议使用setArguments()
方式。