I am using onSaveInstanceState
to save a data item and I need to save a drawble as well, but there's no method called putDrawable
. Therefore, how can I store a drawable in a Bundle
?
This my code:
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable("item", item)
outState.putDrawable("drawable", drawable) // This line is not compiling
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
item = savedInstanceState?.getParcelable("item") ?: item
return super.onCreateDialog(savedInstanceState)
}
CodePudding user response:
There is NO way you can pass a drawable in a android.os.Bundle
.
What you can instead do is to create a class with a static object of drawable. You can store the drawable in it when onSaveInstanceState()
triggers. And then use the same class to retrieve back the drawable. The code given below will explain better:
The additional class
class VariablesHelper(){ companion object{ var drawable?: Drawable = null } }
For setting the drwable
override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) VariablesHelper.drawable = drawable }
For getting the drawable, use
val drawable?:Drawable = VariablesHelper.drawable