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

标签 android android-activity

让我向您展示我的代码的 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/

相关文章:

android - 在 webview 中使用 paypal 进行跨平台应用内购买

android - 如何设置 TextView 以在剩余可用空间中将文本居中?

android - 我如何获取存储在android的res/raw文件夹中的.mp3文件的URI

android - 新 Activity - 应用程序未启动

android - 如何在具有不同输入的 TabActivity 中对 3 个不同的选项卡使用相同的 Activity

android - 没有广播接收器的 Wi-Fi 扫描?

android - 透明、 float 的 Android Activity 不允许更新其背后的内容

android - 如何从自定义 View 开始一项 Activity

android - 我如何从这个错误处理类在 Android 中启动一个新的 Activity?

android - 应用程序崩溃,因为 lateinit 应用程序实例未初始化