【发布时间】:2019-08-24 01:12:21
【问题描述】:
我尝试使用 SharedPreference 将数据从 Activity 传递到其片段,并使用按钮更改 SharedPreference 的值。 这是我的代码。
teesWhite = findViewById(R.id.tees_white)
teesWhite!!.setOnClickListener {
setWarna(R.drawable.wf, R.drawable.wb)
teesColor!!.setImageResource(R.drawable.ic_color_white)
}
teesBlack = findViewById(R.id.tees_black)
teesBlack!!.setOnClickListener {
setWarna(R.drawable.bf, R.drawable.bb)
teesColor!!.setImageResource(R.drawable.ic_color_black)
}
private fun setWarna(warnaDepan : Int, warnaBelakang : Int) {
depan = this.getSharedPreferences(resources.getString(R.string.app_name), Context.MODE_PRIVATE)
val editor = depan!!.edit()
editor.clear()
editor.putInt(KAOS_DEPAN,warnaDepan)
editor.putInt(KAOS_BELAKANG, warnaBelakang)
editor.apply()
}
编辑 SharedPreference 正在工作并且传递给片段的值(我使用这些值来设置 ImageView 的图像资源)。
kaosdepan = view.findViewById(R.id.kaosdepan)
warnaKaos = activity!!.getSharedPreferences(resources.getString(R.string.app_name), Context.MODE_PRIVATE)
val kaos = warnaKaos!!.getInt(KAOS_DEPAN,0)
kaosdepan!!.setImageResource(kaos)
kaosbelakang = view.findViewById(R.id.kaosbelakang)
val kaos2 = warnaKaos!!.getInt(KAOS_BELAKANG, 0)
kaosbelakang!!.setImageResource(kaos2)
但是更改 SharedPreference 值的按钮不起作用。 ImageView 永远不会改变。
【问题讨论】:
-
您如何验证共享首选项的更改没有改变?在设置值之前使用
clear()似乎有些可疑。也只是提示apply()将异步执行写入,而acommit将在主线程上执行(并返回通过/失败的结果)。请提供有关情况的更多背景信息。 -
@BrandonMcAnsh 我使用这些值来设置 ImageView 的图像资源。单击按钮时图像没有改变,所以我认为值没有改变。我在上面的线程中添加了一些内容,请检查
标签: android kotlin sharedpreferences