我有一个这样的Fragment(使用过的支持库)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,itemsListView已正确初始化。当我将 Adapter 设置为这个 ListView 时,ListView 会正确显示项目。但是当我打电话
itemsListView.getAdapter();
Run Code Online (Sandbox Code Playgroud)
在onSaveInstanceState回调中,我得到了 NPE,我认识到这itemsListView是null在调试时。我相信我不会分配itemsListView到null整个Fragment. 更重要的是,我只是有时会收到此 NPE 错误,但我无法说出它何时出现。
错误可能在哪里?为什么itemsListView只变成null了某些时候?
谢谢大家...
Android 文档中有关于onSaveInstanceState片段的注释:
这对应于 Activity.onSaveInstanceState(Bundle) 并且那里的大部分讨论也适用于此。但是请注意:此方法可以在 onDestroy() 之前的任何时间调用。在很多情况下,一个片段可能大部分被拆除(例如当放置在没有 UI 显示的后端堆栈上时),但它的状态不会被保存,直到它的拥有 Activity 实际需要保存它的状态。
它使得使用onSaveInstanceState片段的方法变得相当棘手。
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |