Wiem, że istnieje wiele zapytań regarden onSaveInstanceState, ale nie byłem w stanie znaleźć odpowiedzi na mój problem.Funkcja onSaveInstanceState nie jest wywoływana po obróceniu ekranu
Mam działalność, która rozszerza AppCompatActivity; to działanie wykorzystuje 3 fragmenty i ma zmienną "int currentStep" do śledzenia, który fragment jest wyświetlany. W metodzie onSavedInstanceState przechowuję zmienną currentStep w pakiecie, a następnie metodę onCreate, którą przywracam.
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);
}
...
}
Chodzi o to, że onSavedInstanceState nie zostanie wywołana, gdy zmiany orentation ekranem oraz zgodnie z dokumentacją google, powinno. Komunikat "-------- onsaveinstancestate --------" nie pojawia się w konsoli. Jednak pakiet savedInstanceState w metodzie onCreate nie jest pusty po obróceniu ekranu, ale nie ma int 'currentStep'.
Próbowałem już wielu rzeczy: zmieniłem AppCompatActivity dla ActionBarActivity, przeniosłem wywołanie super.onSavedInstanceState do różnych lokalizacji, próbowałem przechowywać inne zmienne; ale bez względu na to, co robię, metoda nie jest wykonywana.
Również nie mam Androida: configChanges w moim manifeście.
Moja aplikacja jest skompilowany z sdk wersji 22, buildToolsVersion 22.0.1
Dzięki! Nie zdawałem sobie sprawy, że istnieje nowsza wersja Mehtoda. Teraz działa dobrze. – VorteXavier
Kolejne pytanie, to onSaveInstanceState (Bundle outState); uzyskać wywołanie na urządzeniu z Androidem API21 +? lub czy muszę zastąpić obie metody? – VorteXavier
Tak, zostanie wywołana. Nie trzeba przesłonić obu –