设置片段参数的两种方法有什么区别

时间:2016-08-31 11:31:35

标签: android

我想将数据对象传递给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,我该怎么办?

1 个答案:

答案 0 :(得分:2)

虽然两种方法都可以为您的片段设置适当的数据以进行首次初始化。请注意,系统将重新创建和销毁片段(例如,在屏幕旋转时)。当发生这种情况时,系统将不会真正调用setter方式(方法1)因此,它将是一个巨大的失败。因此,建议使用setArguments()方式。