This question already has answers here:
Best practice for instantiating a new Android Fragment

(14个回答)


7年前关闭。




我正在用代码审查其他人对ViewPager的实现。他有一个属于每个 View 的 fragment 类数组。在getItem(int i)内部,他将编写MyFragment.newInstance(),但我认为没有问题。但是,在查看ViewPager的Google文档时,他们在示例中使用Fragment.instantiate。除了设置类信息的方式之外,使用实例化而不是调用newInstance(arg)或空构造函数有任何设计优势吗?

链接:
Fragment.instantiate

最佳答案

instantiate()允许您按名称指定 fragment ,而无需对该类进行编译时静态解析。

当 fragment 名称来自某个运行时源(例如二进制XML)时,这很有用:

<fragment class="com.example.FragmentClass" ...

这就是框架实例化布局XML中指定的 fragment 的方式。

在代码中,最好使用newInstance()或空构造函数来进行编译时静态类型检查。

代码 instantiate() does under the hood与使用newInstance()/空构造函数实例化时发生的变化并没有太大的区别,因此在性能上不太可能出现显着差异。

关于java - 当Fragment.instantiate优于MyFragment.newInstance或new MyFragment()时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21738570/

10-13 05:30