Я видел несколько похожих вопросов о том, что onSaveInstanceState
не вызывается для Fragment
, но в моем случае Fragment
работают нормально, а у основного FragmentActivity
возникают проблемы.
Соответствующий код выглядит довольно просто:
public class MyFActivity extends FragmentActivity implements ActionBar.TabListener {
String[] allValues; // data to save
@Override
protected void onSaveInstanceState (Bundle outState) {
Log.d("putting it!", allValues.toString());
outState.putStringArray("allValues", allValues);
super.onSaveInstanceState(outState);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
allValues = savedInstanceState.getStringArray("allValues");
Log.d("getting it!", allValues.toString());
}
}
}
При приостановке действия (с помощью кнопки «Назад») onSaveInstanceState
никогда не вызывается, и, следовательно, savedInstanceState
всегда является null
в методе onCreate
при возобновлении работы приложения. Я попытался добавить такой блок:
@Override
public void onPause() {
super.onPause();
onSaveInstanceState(new Bundle());
}
который был предложен в https://stackoverflow.com/a/14195202/362657, но в то время как onSaveInstanceState
затем вызывается, savedInstanceState
остается null
в рамках onCreate
метода. Что мне не хватает?
savedInstanceState
теряется. Видите ли вы соответствующийsaveInstanceState
вonCreate()
при повороте устройства? - person Sam   schedule 11.04.2013