Android活动中的RestoreSavedInstance
我试图恢复一个活动的实例,但它没有传递变量,例如,当我重新加载变量时,它正在重置回其原始值。我知道onResume()、OnRestoreSavedinStancestate和onSavedInstanceState都在运行,正如它们在我的日志中显示的那样。谁能解释一下我做错了什么:Android活动中的RestoreSavedInstance,android,android-activity,instance,restore,Android,Android Activity,Instance,Restore,我试图恢复一个活动的实例,但它没有传递变量,例如,当我重新加载变量时,它正在重置回其原始值。我知道onResume()、OnRestoreSavedinStancestate和onSavedInstanceState都在运行,正如它们在我的日志中显示的那样。谁能解释一下我做错了什么: private int a; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea
private int a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page2);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(listener);
if(MainActivity.s1!=null){
onRestoreInstanceState(MainActivity.s1);
}
}
OnClickListener listener = new OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(Page2.this, MainActivity.class);
startActivity(intent);
}
};
@Override
protected void onResume(){
super.onResume();
a++;
Log.d("VIVZ", a + "Resume");
}
@Override
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outState.putInt("counter1", a);
Log.d("VIVZ", a + " was saved");
MainActivity.s1=outState;
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
int a = savedInstanceState.getInt("counter1");
Log.d("VIVZ", a + " Page 2 was restored");
}
我有一段代码,当我还是一个android新手的时候,我正在测试它。我刚刚为你测试了它,它工作得很好 试试这个
public class MainActivity extends Activity {
TextView textviewSavedState;
EditText edittextEditState;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textviewSavedState = (TextView)findViewById(R.id.savedstate);
edittextEditState = (EditText)findViewById(R.id.editstate);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
String stateSaved = savedInstanceState.getString("saved_state");
if(stateSaved == null){
Toast.makeText(MainActivity.this,
"onRestoreInstanceState:\n" +
"NO state saved!",
Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,
"onRestoreInstanceState:\n" +
"saved state = " + stateSaved,
Toast.LENGTH_LONG).show();
textviewSavedState.setText(stateSaved);
edittextEditState.setText(stateSaved);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
String stateToSave = edittextEditState.getText().toString();
outState.putString("saved_state", stateToSave);
Toast.makeText(MainActivity.this,
"onSaveInstanceState:\n" +
"saved_state = " + stateToSave,
Toast.LENGTH_LONG).show();
}
}
也可以参考这篇文章