onSaveInstanceState 在手机翻转时没有数据持久化

问题描述 投票:0回答:1

我一直在搜索关于这个问题的stackoverflow问题,但我还没有找到为什么即使在我查看logcat时调用了onSaveInstanceState,我仍然无法将那段时间保存的捆绑信息获取到我的应用程序中的原因

常量变量

const val KEY_REVENUE = "revenue_key"
const val KEY_DESSERT_SOLD = "dessert_sold_key"

onCreate 函数

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
other codes
if (savedInstanceState != null) {
            revenue = savedInstanceState.getInt(KEY_REVENUE, 0)
            dessertsSold = savedInstanceState.getInt(KEY_DESSERT_SOLD, 0)

        }
}

onSaveInstanceState 函数

override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)

        Log.d(TAG, "onSaveInstanceState Called")
        outState.putInt(KEY_REVENUE, revenue)
        outState.putInt(KEY_DESSERT_SOLD, dessertsSold)


    }

尝试寻找发生这种情况的原因,我也检查了我的代码和 logcat 几次,并尝试在几个不同的设备上运行它,但我仍然无法弄清楚,但我认为这只是一些简单的错误看不见

android kotlin logcat
1个回答
0
投票

我刚刚根据您的解决方案尝试了类似的代码,它工作正常。

您是否忘记在 onCreate 方法中更新 UI?

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    if (savedInstanceState != null) {
        revenue = savedInstanceState.getInt(KEY_REVENUE, 0)
        dessertsSold = savedInstanceState.getInt(KEY_DESSERT_SOLD, 0)

        //TODO Update UI views with variables from savedInstanceState

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.