2017-10-15 164 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),用于从空指针,以防止例外

相关问题