【问题标题】:OnRestoreInstanceState returning null after rotationOnRestoreInstanceState 在旋转后返回 null
【发布时间】:2025-12-21 02:45:07
【问题描述】:

当我在 listView 中输入内容然后旋转它时,listView 返回 null 而不是我输入的文本。你能解释一下为什么会这样吗?

override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
        super.onRestoreInstanceState(savedInstanceState)
        Log.i("ToDoList","OnRestoreInstanceState was called")

        val listSave = savedInstanceState?.getStringArrayList("list")
        this.list.clear()
        this.list.add(listSave.toString())

        adapter = ArrayAdapter <String> (this, android.R.layout.simple_list_item_1,list)
        toDoList.adapter = adapter
    }
override fun onSaveInstanceState(outState: Bundle?, outPersistentState: PersistableBundle?) {
        super.onSaveInstanceState(outState, outPersistentState)
        Log.i("ToDoList","OnSaveInstanceState was called")
        outState?.putStringArrayList("list", list)
    }

【问题讨论】:

  • 看看这个问题:*.com/questions/12793069/…。我猜,你的状态没有被保存,因为该方法没有被操作系统调用。
  • 不是我查的

标签: java android android-activity kotlin


【解决方案1】:

根本原因:您覆盖了错误的onSaveInstanceState() 方法。

解决方案:您必须覆盖 onSaveInstanceState(Bundle) 而不是 onSaveInstanceState(Bundle, PersistableBundle)

更改您的代码

override fun onSaveInstanceState(outState: Bundle?, outPersistentState: PersistableBundle?) {
    super.onSaveInstanceState(outState, outPersistentState)
    Log.i("ToDoList","OnSaveInstanceState was called")
    outState?.putStringArrayList("list", list)
}

override fun onSaveInstanceState(outState: Bundle?) {
    super.onSaveInstanceState(outState)
    Log.i("ToDoList","OnSaveInstanceState was called")
    outState?.putStringArrayList("list", list)
}

【讨论】:

    最近更新 更多