Мне нужна ваша помощь. Я делаю приложение, и я использую методы onSaveInstanceState()
и onRestoreInstanceState()
, но второй метод не работает.Действительно как работает onRestoreInstanceState()?
Я вижу, как программа получает доступ к onSaveinstancestate() при нажатии кнопки home, но когда я возвращаюсь к приложению, код не вызывает onRestoreInstanceState()
или onCreate()
.
В результате приложение запускается с нуля. Я не знаю причины ... ты можешь мне помочь?
Это мой код:
public class MainActivity extends ActionBarActivity {
MyView myView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myView = new MyView(this);
setContentView(myView);
if (savedInstanceState != null) {
myView .SetScore(savedInstanceState.getInt("Id"));
myView .SetNivel(savedInstanceState.getInt("Valor"));
}
}
.....
@Override
protected void onRestart(){
super.onRestart();
myView = new MyView(this);
setContentView(myView);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
myView.SetScore(savedInstanceState.getInt("Id"));
myView.SetNivel(savedInstanceState.getInt("Valor"));
}
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState){
savedInstanceState.putInt("Score",myView.GetId());
savedInstanceState.putInt("Nivel",muView.GetValor());
super.onSaveInstanceState(savedInstanceState);
}
}
Этот вопрос может помочь вам http://stackoverflow.com/questions/5574462/why-onrestoreinstancestate-never-gets-called – Prudhvi
Вы проверили, что их не вызывают? В вашем коде вы сохраняете с помощью разных ключей, которые вы используете для восстановления. – StenSoft
Когда вы нажимаете HOME, а затем возвращаетесь в приложение, оно все равно должно находиться в том же состоянии, что и при его оставлении, поэтому нет причин для вызова 'onRestoreInstanceState()'. В чем проблема? –