Android onSaveInstanceState()回调时片段变为null的视图

Android onSaveInstanceState()回调时片段变为null的视图,android,Android,我有一个片段(用于支持库)如下 public class ItemDetailsFragment extends Fragment { private ListView itemsListView; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState);

我有一个
片段
(用于支持库)如下

public class ItemDetailsFragment extends Fragment {
    private ListView itemsListView;

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        itemsListView = (ListView) view.findViewById(R.id.listMode);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        ItemsAdapter adapter = (ItemsAdapter) itemsListView.getAdapter();
        ArrayList<String> items = adapter.getItems();
        outState.putStringArrayList("some_key", items);
    }
}
onSaveInstanceState
回调中,我得到了NPE,我在调试时发现
itemsListView
null
。我确信我没有通过
片段
itemsListView
分配给
null
。更重要的是,我只是偶尔会遇到这个NPE错误,但我不能说什么时候是

错误可能在哪里?为什么
itemsListView
仅在某些时候变为
null


感谢大家……

Android文档中有一条关于:

这与Activity.onSaveInstanceState(Bundle)相对应,这里的大部分讨论也适用于此。但是请注意:在onDestroy()之前的任何时候都可以调用此方法。在许多情况下,片段可能大部分被删除(例如,当放在后堆栈上时,没有显示UI),但在其所属活动实际需要保存其状态之前,不会保存其状态


这使得对片段使用
onSaveInstanceState
方法变得相当棘手。

但为什么我得到NPE错误的次数很少?我认为这一切都不是以可预测的方式发生的。Android中的许多事情都是不同步的,所以有时你无法准确判断事情何时会发生。@RuntimeException为了避免这种情况,我个人并不依赖于onSaveInstanceState时的视图,也不依赖于将所需的值存储在fragment上的变量中。
 itemsListView.getAdapter();