我想了解以下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"是要检索首先保存在它下面的值吗?
答案 0 :(得分:4)
在这做什么零?
引用the documentation,这是“如果[the]键不存在则返回的值”。
当然,引用“curChoice”的目的是检索首先保存在其下的值?
是的,在这种情况下,默认值似乎是多余的。通常,默认值适用于有条件地将密钥添加到Bundle
的情况,因此Bundle
的使用者可以干净地处理未添加密钥的情况。
答案 1 :(得分:2)
当然,引用“curChoice”的目的是检索首先保存在其下的值?
我回答说: 是的,开发人员的意图很清楚,将值保存在savedInstance中,但是 可能有这种情况:
键,用于检索值!=键,用于插入数据 savedInstance
因此开发人员还提供默认值(在您的情况下为O),用于防止空指针异常
答案 2 :(得分:0)
分配给" mCurCheckPosition"的默认值如果没有" curChoice"在savedInstanceState中键入。可以把它想象成一个片段正在恢复的情况(所以savedInstanceState不会被取消)但是没有" curChoice"。