片段实例化的区别;

时间:2016-04-20 14:14:09

标签: android-fragments static instantiation

我想正确理解从构造函数中获取片段的这些方法之间的区别:

1

public MyFragment(DataClass data) {
this.dataClass = data;
}

2

public static MyFragment newInstance(DataClass data) {
MyFragment fragment = new MyFragment();
fragment.setDataClass(data);
return fragment;
}

3

public static MyFragment newInstance(DataClass data) {
MyFragment fragment = new MyFragment();

Bundle args = new Bundle();
args.putInt("myData", data.getData());
fragment.setArguments(args);

return fragment;
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

首先,Fragment应该只有空构造函数!

请检查documentation,说明:
" 每个片段必须有一个空构造函数..."。

然后查看this post以获得更好的解释。

关于选项## 2和3 - 对我来说,两者都是合适的。

通过Bundle - 再次上面提到的帖子说,"这种方式如果分离并重新附加对象状态可以通过参数存储。"。

但是如果每次都创建newInstance Fragment - #2方法也很好。我使用#2方法,因为我没有存储创建的片段。