为什么我在onCreate方法中放置if(savedInstanceState!= null){}并不重要

时间:2014-10-04 12:27:54

标签: android android-activity

让我向您展示我的代码的两个例子。

example 1:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if (savedInstanceState != null){
            mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, mCurrentIndex);
        };
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);
    }

示例2:

@Override
protected void onCreate(Bundle savedInstanceState) {             
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    if (savedInstanceState != null){
        mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, mCurrentIndex);
    };
}

我想知道我把它放在哪里无关紧要

if (savedInstanceState != null){
    mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, mCurrentIndex);
};

在我的代码中。我的假设是setContentView显示当前布局,如果更改mCrrentIndex则不同。因此,如果我首先设置内容视图并且检查mCurrentIndex具有什么int,那就很重要了。事实证明并非如此,我不知道为什么。谁能解释一下?

1 个答案:

答案 0 :(得分:1)

onCreate方法中,尚未创建任何视图,它们会在Activity lifecycle的后期阶段被夸大。因此,当它们被加载时,将使用mCurrentIndex的新值,因为即使您在调用setContentView之后设置它,它仍然是之前已创建任何视图