【发布时间】:2018-09-11 19:48:31
【问题描述】:
我有一个在ViewPager 中使用的片段。片段实例是通过工厂方法构造的,如下所示:
public static MyFragment newInstance(int sectionNumber, List<String> aList) {
MyFragment fragment = new MyFragment();
fragment.list = aList;
return fragment;
}
该列表从活动的onCreate() 方法传递到SectionsPagerAdapter 实例,我在其中为我的片段调用newInstance()。列表永远不能为空(代码中有检查)。
问题:当我尝试进入时,应用程序在onStart() 方法中出现NPE 失败
Multi-Window view。该列表为空。
我注意到我在newInstance() 调用中设置的字段现在为空。只有那些在onCreateView() 中初始化的对象才会被分配对象。我猜系统会绕过我的 newInstance() 方法以不同的方式初始化我的 Fragment。
问题:为什么我的工厂方法中设置的字段设置为空?为什么它只发生在多窗口模式下?如何预防?
可能我滥用了一些东西,认为通过工厂方法创建片段是 Astroid Studio 默认提供的。
【问题讨论】:
标签: android android-fragments android-viewpager