0

When i type something in listView and after that rotate it listView returns null instead of text i typed in. Can you please explain why is this happening.

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)
    }
  • 1
    Have a look at this question: https://stackoverflow.com/questions/12793069/android-onsaveinstancestate-not-being-called-from-activity. I guess, that your state is not saved, because the method is not called by the os. – Jannik May 09 '19 at 19:58
  • It's not that i checked – Mihajlo Milosevic May 09 '19 at 22:15

1 Answers1

3

Root cause: You override wrong onSaveInstanceState() method.

Solution: You must override onSaveInstanceState(Bundle) instead of onSaveInstanceState(Bundle, PersistableBundle).

Change your code from

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

to

override fun onSaveInstanceState(outState: Bundle?) {
    super.onSaveInstanceState(outState)
    Log.i("ToDoList","OnSaveInstanceState was called")
    outState?.putStringArrayList("list", list)
}
Son Truong
  • 13,661
  • 5
  • 32
  • 58