我尝试使用SharedPreference将数据从Activity传递到其片段,并使用button更改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永远不会改变。
答案 0 :(得分:0)
活动上下文范围与片段的上下文范围不同,因此导致getInt()调用的结果不一致。使用getDefaultSharedPreferences
或通过applicationContext