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

What is the second parameter in savedInstanceState.getInt?

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

在页面末尾的示例中,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" 的目的肯定是首先检索保存在它下面的值吗?

What is this zero doing there?

引用the documentation,就是"value to return if [the] key does not exist".

Surely the point of referencing "curChoice" is to retrieve the value that was saved under it in the first place?

是的,在这种情况下,默认值似乎是多余的。通常,默认值是针对有条件地将键添加到 Bundle 的情况,因此 Bundle 的消费者可以干净地处理未添加键的情况。

这是分配给 "mCurCheckPosition" 的默认值,以防 savedInstanceState 中没有 "curChoice" 键。将其视为片段正在恢复的情况(因此 savedInstanceState 不会为空)但没有 "curChoice".

Surely the point of referencing "curChoice" is to retrieve the value that was saved under it in the first place?

我回复了它: 是的,开发人员的意图很明确,就是要获取保存在 savedInstance 中的值,但是 可能存在的情况:

key ,given to retrieve the value != Key, to insert the data in savedInstance

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