[英]Attempting to add data from Intent to savedInstanceState
我的程序在啟動時運行一個活動,然后發送打開另一個活動的Intent。 第一次發生這種情況時,我想將信息從Intent
保存到savedInstanceState
以便每當再次打開應用程序時,該信息就可用。 代碼如下:
savedInstanceState.putString("name", getIntent().getStringExtra("name"));
savedInstanceState.putString("font", getIntent().getStringExtra("font"));
savedInstanceState.putInt("background", getIntent().getIntExtra("background", R.drawable.bg1big));
但是我繼續得到NullPointerException
說
嘗試在空對象引用上調用虛擬方法'void android.os.Bundle.putString(java.lang.String,java.lang.String)'。
基本上,您需要覆蓋onSaveInstanceState()和onRestoreInstanceState()來存儲和檢索所需的值。 看看這個答案-https: //stackoverflow.com/a/151940/1649353
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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.