Ok... Je dois être en train de négliger quelque chose de très simple ici, mais je pense que j'essaie de faire quelque chose d'assez basique... Conserver simplement la position de la barre de défilement d'un ScrollView lors d'un changement d'orientation...
Voici le code de mes onSaveInstanceState et onRestoreInstanceState . sView est le conteneur pour le layout ScrollView. A l'intérieur de mon scrollview se trouve un linearlayout avec beaucoup de textviews.
@Override
public void onSaveInstanceState(Bundle outState)
{
//---save whatever you need to persist—
outState.putInt("sViewX",sView.getScrollX());
outState.putInt("sViewY",sView.getScrollY());
super.onSaveInstanceState(outState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
sViewX = savedInstanceState.getInt("sViewX");
sViewY = savedInstanceState.getInt("sViewY");
sView.scrollTo(sViewX, sViewY);
}
Si je place un Toast avec les valeurs de sViewX et sViewY lors de la restauration, les valeurs sont conservées et correctes.
Edit : Je viens d'essayer de faire un sView.scrollTo(0,150) ; dans mon onCreate juste pour voir si cela ouvrirait l'activité à 150px de profondeur, et ça n'a pas marché. Je pense que mon problème est lié à la méthode .scrollTo.