0
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2);
    savedInstanceState.putString("foo", "bar");
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);

  String myString = savedInstanceState.getString("foo");

  Log.i("debug", "saved data: " + myString);
}

我试图在活动中保留一些值,但收到以下错误:06-23 23:09:44.038: E/AndroidRuntime(17584): java.lang.RuntimeException: Unable to start activity ComponentInfo{se.johanberntsson.activitytest/se.johanberntsson.activitytest.TestActivity}: java.lang.NullPointerException

我在这里错过了什么?谢谢

4

1 回答 1

3

将savedInstanceState onSaveInstanceStateBundle 中的值保存为:

public String strfoo="";
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main2);
            //comment this line you only fatch values from savedInstanceState
            String myString = savedInstanceState.getString("foo");
            Log.i("debug", "saved data: " + myString);
            // savedInstanceState.putString("foo", "bar");
            strfoo="bar"; set value here
        }

        @Override
        public void onRestoreInstanceState(Bundle savedInstanceState) {
          super.onRestoreInstanceState(savedInstanceState);
          String myString = savedInstanceState.getString("foo");
          Log.i("debug", "saved data: " + myString);
        }

      @Override

      public void onSaveInstanceState(Bundle savedInstanceState) {
         savedInstanceState.putString("foo", strfoo);
         super.onSaveInstanceState(savedInstanceState);

       } 
于 2012-06-23T21:16:47.650 回答