让我向您展示我的代码的 2 个示例。
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
则不同。因此,如果我首先设置内容 View 然后检查 mCurrentIndex
具有什么 int,这将很重要。事实证明并非如此,我不知道为什么。谁能解释一下?
最佳答案
在 onCreate
方法中,尚未创建任何 View ,它们在 Activity lifecycle 的后期阶段被膨胀.因此,当加载它们时,将使用 mCurrentIndex
的新值,因为即使您在调用 setContentView
之后设置它,它仍然是之前 已创建任何 View 。
关于android - 为什么我把 if (savedInstanceState != null){} 放在 onCreate 方法中并不重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192811/