在活动之间保存状态

And*_*era 3 android

我有2个名为FirstActivity.javaand的活动SecondActivity.java.

当我点击一个按钮时FirstActivity,我打电话SecondActivity.当我从返回时SecondActivity,基于结果,我需要跳过FirstActivity在其onCreate()方法中执行的一些步骤.

SecondActivityBundle以前回来把我给出的数据作为输入Intent.我在onCreate()第一个活动中访问了该数据.

当我开始时,活动应用程序崩溃显示NullPointerException在我访问第二个活动的数据的行中.

我认为,原因是当应用程序第一次启动时,没有值 Bundle

那么,任何人都可以帮我解决这个问题吗?

Mos*_*oss 8

您必须实现onSaveInstanceState(Bundle savedInstanceState)并将要保存的值保存到Bundle中.实现onRestoreInstanceState(Bundle savedInstanceState)以恢复Bundle并再次设置数据:

public class MyActivity extends Activity {
    /** The boolean I'll save in a bundle when a state change happens */
    private boolean mMyBoolean;

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        savedInstanceState.putBoolean("MyBoolean", mMyBoolean);
        // ... save more data
        super.onSaveInstanceState(savedInstanceState);
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        mMyBoolean = savedInstanceState.getBoolean("MyBoolean");
        // ... recover more data
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,您将找到有关状态处理的使用文档:http://developer.android.com/reference/android/app/Activity.html

只需在文档中搜索thos方法:P