Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动中的RestoreSavedInstance_Android_Android Activity_Instance_Restore - Fatal编程技术网

Android活动中的RestoreSavedInstance

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

我试图恢复一个活动的实例,但它没有传递变量,例如,当我重新加载变量时,它正在重置回其原始值。我知道onResume()、OnRestoreSavedinStancestate和onSavedInstanceState都在运行,正如它们在我的日志中显示的那样。谁能解释一下我做错了什么:

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();
 }

}
也可以参考这篇文章