Hallo zusammen,
ich brauche mal etwas Unterstützung.
Ich habe ein Fragment, welches beim Orientationchange die aktuelle Viewpager Position in das Bundle vom Fragment schreibt:
@Override
public void onSaveInstanceState (Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt(VIEWPAGER_ITEM, _viewpager.getCurrentItem());
Log.i(TAG, "onSaveInstanceState() : " + _viewpager.getCurrentItem());
}
Das lese ich dann in der onCreateView()-Methode wieder aus:
//Klassenvariabel zum Halten des letzten Viewpager item
private int _lastPage = 0;
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
if (null != savedInstanceState)
{
_lastPage = savedInstanceState.getInt(VIEWPAGER_ITEM);
}
return inflater.inflate(R.layout.fragment_slidingtabs, container, false);
}
Nun will ich in der onStart()-Methode den ViewPage per setCurrentItem(_lastPage) auf die Seite vor dem Orientationchange setzten. Nun hat die Variable _lastPage hier aber nun den Wert 0. Ich verstehe nicht warum?
@Override
public void onStart()
{
super.onStart();
_viewpager.setCurrentItem(_lastPage, true);
Log.i(TAG, "onStart : " + _lastPage);
}
@Override
public void onResume()
{
Log.i(TAG, "onResume() : " + _lastPage);
}
Im Log kann ich folgendes sehen:
onSaveInstanceState : 2
onCreateView : 2
onStart : 0
onResume : 0
Die Ausgabe passt zu meiner Vorstellung vom Fragment lifecycle aber irgendwie blick ich meinen Fehler gerade nicht ...
Gruß,
Markus
— geändert am 15.05.2014, 09:14:09