我的程序在启动时运行一个活动,然后它发送一个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)'。
答案 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");
}