gpt4 book ai didi

java - Android registerOnSharedPreferenceChangelistener 仅触发几次后不起作用

转载 作者:行者123 更新时间:2023-12-01 22:58:55 30 4
gpt4 key购买 nike

您好,我遇到了在 MainActivity 中注册 onSharedPreferenceChangeListener 的问题。我唯一的偏好是具有 3 个不同选项的 ListPreference。因此,在程序开始时,它仍然会首先被触发 - 大多数情况下会触发 3 次,有时甚至不会在开始时触发。我不认为这就是它应该如何工作的,所以我的代码在下面,如果需要更多,只需编写特定部分的注释。

// (from MainActivity)
this.sharedPreferences.registerOnSharedPreferenceChangeListener { sharedPreferences: SharedPreferences, s: String ->
var value = sharedPreferences.getString("location", "")

controller.setLocation(value, this)
}



class SettingsActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.settings_activity)
supportFragmentManager
.beginTransaction()
.replace(R.id.settings, SettingsFragment())
.commit()
supportActionBar?.setDisplayHomeAsUpEnabled(true)


}

class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)

}
}


}

最佳答案

我为遇到此类问题的每个人找到了解决方案。大概就是这个范围吧。当您在 Activity 之间切换时,听众会迷失方向。如何修复:将监听器 block 作为全局变量,然后将其注册到“onCreate”方法中。

关于java - Android registerOnSharedPreferenceChangelistener 仅触发几次后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428644/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com