在活动之间保存状态

时间:2010-10-26 10:35:24

标签: android

我有2个名为FirstActivity.javaSecondActivity.java的活动。

当我点击FirstActivity中的按钮时,我会拨打SecondActivity。当我从SecondActivity返回时,根据结果,我需要跳过FirstActivity中使用onCreate()方法执行的一些步骤。

SecondActivity回来我使用Bundle将我提供的数据作为输入提供给Intent。我在第一个活动的onCreate()中访问了该数据。

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

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

中没有值

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

1 个答案:

答案 0 :(得分: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
    }
}

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

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