У меня есть фрагмент со списком с множественным выбором. Я пытаюсь сохранить экземпляр элементов, которые в настоящее время отмечены в списке, и восстановить их в случае минимизации приложения и тому подобного.
Этапы тестирования:
- Доберитесь до фрагмента списка с множественным выбором.
- Проверьте несколько элементов списка
- Нажмите клавишу «Домой», чтобы свернуть приложение.
- Нажмите кнопку многозадачности и выберите мое приложение, чтобы восстановить его.
Ниже приведен код, который я использую:
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()
для достижения вышеупомянутого эффекта, но, к удивлению, я не вижу журналы, которые я добавил к этому методу.
Пожалуйста, помогите разобраться, как работает жизненный цикл Activity и Fragment в этом случае и как я могу восстановить свое состояние наилучшим образом.