Salvar e restaurar o estado expandido / recolhido de um ExpandableListActivity
Eu tenho um ExpandableListActivity (usando um SimpleCursorTreeAdapter) que inicia outra atividade quando o usuário clica em um elemento filho. Ao pressionar o botão Voltar na nova atividade, todos os itens da lista são recolhidos novamente. Como faço para salvar o estado expandido do ExpandableListActivity e restaurá-lo novamente.
Eu já tentei implementar onSaveInstanceState () e onRestoreInstanceState () como este ...
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Parcelable listState = getExpandableListView().onSaveInstanceState();
outState.putParcelable("ListState", listState);
}
@Override
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
Parcelable listState = state.getParcelable("ListState");
getExpandableListView().onRestoreInstanceState(listState);
}
... mas onRestoreInstanceState () nunca é chamado. Também tentei restaurar o estado no método onCreate (), mas também não é chamado:
if (savedInstanceState != null) {
Parcelable listState = savedInstanceState.getParcelable("ListState");
getExpandableListView().onRestoreInstanceState(listState);
}