Я видел несколько похожих вопросов о onSaveInstanceState
, которые не вызываются для Fragment
s, но в моем случае 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
. Что мне не хватает?