Я знаю, что есть много вопросов, которые относятся к onSaveInstanceState, но я не смог найти ответ на свою проблему.
У меня есть активность, которая расширяет AppCompatActivity; эта активность использует 3 фрагмента и имеет переменную 'int currentStep' для отслеживания того, какой фрагмент отображается. В методе onSavedInstanceState я сохраняю переменную currentStep в пакете, а затем в методе onCreate я его восстанавливаю.
public class MainActivity extends AppCompatActivity {
private final String CURRENT_STEP_TAG = "current_step";
private int currentStep;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pedido);
if(savedInstanceState == null) {
loadFirstFragment();
} else {
currentStep = savedInstanceState.getInt(CURRENT_STEP_TAG);
if(currentStep == 2){
//Do some stuff...
}
}
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
Log.d("deubg", "--------onsaveinstancestate--------");
outState.putInt(CURRENT_STEP_TAG, currentStep);
super.onSaveInstanceState(outState, outPersistentState);
}
...
}
Дело в том, что onSavedInstanceState не будет вызываться при изменении настроек экрана и в соответствии с документацией Google. Сообщение "-------- onsaveinstancestate --------" не отображается в консоли. Однако Bundle savedInstanceState в методе onCreate не имеет значения null после вращения экрана, но у него нет int 'currentStep'.
Я пробовал много вещей: изменил AppCompatActivity для ActionBarActivity, переместил вызов super.onSavedInstanceState в разные местоположения, попытался сохранить другие переменные; но независимо от того, что я делаю, метод не выполняется.
Также у меня нет андроида: configChanges в моем манифесте.
Мое приложение компилируется в sdk версии 22, buildToolsVersion 22.0.1