尝试将数据从Intent添加到savedInstanceState

时间:2017-03-02 01:49:05

标签: java android android-intent save

我的程序在启动时运行一个活动,然后它发送一个Intent打开另一个活动。第一次发生这种情况时,我希望将信息从------- | | | xxx | | xxx | | | -------- 保存到Intent,以便每当应用再次打开时,该信息都可用。代码如下所示:

savedInstanceState

但是我继续得到savedInstanceState.putString("name", getIntent().getStringExtra("name")); savedInstanceState.putString("font", getIntent().getStringExtra("font")); savedInstanceState.putInt("background", getIntent().getIntExtra("background", R.drawable.bg1big)); 的说法

  

尝试在空对象引用上调用虚方法'void android.os.Bundle.putString(java.lang.String,java.lang.String)'。

2 个答案:

答案 0 :(得分:0)

您基本上需要覆盖onSaveInstanceState()和onRestoreInstanceState()来存储和检索所需的值。看看这个答案 - https://stackoverflow.com/a/151940/1649353

答案 1 :(得分:0)

savedInstanceState是上次保存的东西时给出的 - 它是重新加载的内容。即使它不是null,你也不应该添加任何内容,它不会持久存在。这样做:

@Override
public void onSaveInstanceState(Bundle bundle) {
    super.onSaveInstanceState(bundle);
    bundle.putString("name", mName);        
    bundle.putString("font", mFont);      
    bundle.putInt("background", mBackground);
}

然后在onCreate onRestoreInstanceState中,您可以读取值并填充以后保存的变量

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    mName = savedInstanceState.getString("name");     
    mBackground = savedInstanceState.getString("background");        
    mFont = savedInstanceState.getString("font");      
}