我有一个带有多项选择列表的片段。我正在尝试保存当前在列表中检查的项目的实例,并在应用程序最小化等情况下恢复它们。
测试步骤:
- 到达多选列表片段。
- 检查一些列表项
- 按主页键最小化应用程序。
- 按多任务按钮并选择我的应用程序来恢复它
以下是我正在使用的代码:
adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_multiple_choice,
android.R.id.text1, listToShow);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
mSelectedItems.clear();
int count = categoryList.getCheckedItemCount();
SparseBooleanArray booleanArray = categoryList.getCheckedItemPositions();
for (int i = 0; i < count; i++) {
mSelectedItems.add(booleanArray.keyAt(i));
}
}
});
@Override
public void onSaveInstanceState(Bundle outState) {
Log.d("SubcategoryselectionList", "onsavedinstancestate");
outState.putIntegerArrayList(SELECTED_ITEM, mSelectedItems);
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
Log.d("SubcategoryselectionList", "onViewStateRestored");
if (savedInstanceState != null) {
if (savedInstanceState.getIntegerArrayList(SELECTED_ITEM) != null) {
Log.d("SubcategoryselectionList", "onViewStateREstored selected items found");
mSelectedItems = savedInstanceState
.getIntegerArrayList(SELECTED_ITEM);
for (int i = 0; i < mSelectedItems.size(); i++) {
categoryList.setItemChecked(mSelectedItems.get(i), true);
}
}
}
super.onViewStateRestored(savedInstanceState);
}
当我看到日志时,该方法onViewStateRestored
从未被调用过。
为了解决这个问题,我想到使用活动生命周期并使用它的方法onRestoreInstanceState()
达到上述效果,但令人惊讶的是我看不到我添加到此方法中的日志。
请有人帮助澄清活动和片段的生命周期在这种情况下如何工作,以及如何以最佳方式恢复我的状态。
您应该实现您正在查找的逻辑onActivityCreated
您可以在其中获取保存的实例状态。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)