使用按钮更改SharedPreference值

时间:2019-08-24 01:12:21

标签: android kotlin sharedpreferences

我尝试使用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永远不会改变。

1 个答案:

答案 0 :(得分:0)

活动上下文范围与片段的上下文范围不同,因此导致getInt()调用的结果不一致。使用getDefaultSharedPreferences或通过applicationContext

限制SharedPreferences访问的范围