【问题标题】:Difference between fragment instantiation;片段实例化的区别;
【发布时间】:2016-04-20 14:14:08
【问题描述】:

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

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;
}

提前致谢。

【问题讨论】:

    标签: android-fragments static instantiation


    【解决方案1】:

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

    请查看documentation,里面写着:
    每个片段都必须有一个空的构造函数...”。

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

    关于选项 ##2 和 3 - 就我而言,两者都是合适的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多