savedInstanceState.getInt中的第二个参数是什么?

时间:2017-10-15 13:24:43

标签: android bundle android-savedstate

我想了解以下Android片段文档中的内容: Android fragment docs

在页面末尾的示例中,mCurCheckPosition int保存在一个包中,作为" curChoice":

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

然而,在示例的开头,当检查并可能检索" curChoice"时,有第二个参数' 0' 0提供:

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

这零在做什么?肯定是引用" curChoice"是要检索首先保存在它下面的值吗?

3 个答案:

答案 0 :(得分:4)

  

在这做什么零?

引用the documentation,这是“如果[the]键不存在则返回的值”。

  

当然,引用“curChoice”的目的是检索首先保存在其下的值?

是的,在这种情况下,默认值似乎是多余的。通常,默认值适用于有条件地将密钥添加到Bundle的情况,因此Bundle的使用者可以干净地处理未添加密钥的情况。

答案 1 :(得分:2)

  

当然,引用“curChoice”的目的是检索首先保存在其下的值?

我回答说: 是的,开发人员的意图很清楚,将值保存在savedInstance中,但是 可能有这种情况:

  

键,用于检索值!=键,用于插入数据   savedInstance

因此开发人员还提供默认值(在您的情况下为O),用于防止空指针异常

答案 2 :(得分:0)

分配给" mCurCheckPosition"的默认值如果没有" curChoice"在savedInstanceState中键入。可以把它想象成一个片段正在恢复的情况(所以savedInstanceState不会被取消)但是没有" curChoice"。