【问题标题】:Change SharedPreference Value with Button使用按钮更改 SharedPreference 值
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • @Taufik 有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 2014-09-14
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多