use*_*925 9 java android android-fragments
我是代码审查其他人的ViewPager实现.他有一个属于每个视图的片段类数组.在getItem(int i)中,他会编写MyFragment.newInstance(),我认为没有问题.但是,查看ViewPager的google doc,他们在他们的示例中使用Fragment.instantiate.除了设置类信息的方式之外,使用实例化而不是调用newInstance(arg)或空构造函数有什么设计优势吗?
instantiate() 允许您按名称指定片段,而无需编译时静态解析该类.
当片段名称来自某些运行时源(例如二进制XML)时,它很有用:
<fragment class="com.example.FragmentClass" ...
Run Code Online (Sandbox Code Playgroud)
这是框架实例化布局XML中指定的片段的方式.
在代码中,最好使用newInstance()或者使用空构造函数来获得编译时静态类型检查.
instantiate()引导下的代码与使用newInstance()/ empty构造函数实例化时发生的代码并没有太大的不同,因此不太可能在性能上有显着差异.