2017-10-15 162 views
1

我想從以下的Android片段文檔明白的東西: Android fragment docssavedInstanceState.getInt中的第二個參數是什麼?

在頁面結束的例子中,mCurCheckPosition INT保存在捆綁爲「curChoice」:

@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt("curChoice", mCurCheckPosition); 
    } 

然而,在該示例的開始,用於檢查和可能的檢索「curChoice」時,存在提供了一個第二參數「0」:

if (savedInstanceState != null) { 
      // Restore last state for checked position. 
      mCurCheckPosition = savedInstanceState.getInt("curChoice", 0); 
     } 

這是個在那裏做零?當然,引用「curChoice」的要點是首先檢索保存在它下面的值?

+0

當該值不存在時,它不會返回null,並且它將返回第二個參數 – KeLiuyue

回答

3

這是零在那裏做什麼?

引用the documentation,這是「如果[密鑰]不存在時返回的值」。

當然,引用「curChoice」的要點是首先檢索保存在它下面的值嗎?

是的,在這種情況下,默認值似乎是多餘的。通常情況下,默認值用於將密鑰有條件地添加到Bundle的情況,因此Bundle的使用者可以乾淨地處理未添加密鑰的情況。

0

如果savedInstanceState中沒有「curChoice」鍵,那麼這是分配給「mCurCheckPosition」的默認值。把它看作是片段得到恢復的情況(所以savedInstanceState不會爲空),但沒有「curChoice」。

2

當然,引用「curChoice」的要點是首先檢索保存在它下面的值?

我回答它: 呀,開發商的意圖是明確的得到保存在savedInstance的價值,但 可能有情況!

的關鍵,鑑於檢索值=鍵,插入數據 savedInstance

所以,開發商還提供了一個默認值(在你的情況O),用於從空指針,以防止例外

相關問題