kotlin 如何将drawable放入onSaveInstanceState中

iq3niunx  于 2022-11-30  发布在  Kotlin
关注(0)|答案(1)|浏览(138)

我用onSaveInstanceState保存一个数据项,我还需要保存一个drawable,但是没有一个叫putDrawable的方法。因此,我如何在Bundle中保存一个drawable呢?
这是我的代码:

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)
}
e4eetjau

e4eetjau1#

您无法在android.os.Bundle中传递drawable。
你可以用drawable的静态对象创建一个类。当onSaveInstanceState()触发时,你可以将drawable存储在类中。然后用同一个类检索drawable。下面的代码可以更好地解释:
1.附加类

class VariablesHelper(){
   companion object{
      var drawable?: Drawable =  null
   }
}

1.用于设置图纸

override fun onSaveInstanceState(outState: Bundle) {
   super.onSaveInstanceState(outState)
   VariablesHelper.drawable = drawable
}

1.要获取可绘制对象,请使用

val drawable = VariablesHelper.drawable

相关问题