首页 > 解决方案 > 使用按钮更改 SharedPreference 值

问题描述

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

标签: androidkotlinsharedpreferences

解决方案


活动上下文范围与片段的上下文范围不同,因此导致 getInt() 调用的结果不一致。使用getDefaultSharedPreferences或限定 SharedPreferences 访问权限applicationContext


推荐阅读