簡體   English   中英

嘗試將數據從Intent添加到savedInstanceState

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM