我正在尝试存储一个布尔值,该值每次单击按钮时都会更改。我想使用共享的首选项来执行此操作,但是我一直遇到此错误: 无法解析的参考:getPreferences
这是我的代码:
btnStyle.setOnClickListener() {
styleHasChanged = !styleHasChanged;
if(styleHasChanged == true){
btnStyle.setText("true")
}else{
btnStyle.setText("false")
}
// AppUtil.saveConfig(activity, config)
// EventBus.getDefault().post(ReloadDataEvent())
var sharedPref : SharedPreferences = this.getPreferences(Context.MODE_PRIVATE);
var editor = sharedPref.edit()
editor.putBoolean("bla", styleHasChanged)
editor.commit()
}
答案 0 :(得分:2)
对于 KOTLIN
如果“活动”,则使用 this@ActivityName
var sharedPref : SharedPreferences = this@ActivityName.getPreferences(Context.MODE_PRIVATE);
如果使用Fragment,则使用 activity!!
var sharedPref : SharedPreferences = activity!!.getPreferences(Context.MODE_PRIVATE);
答案 1 :(得分:1)
这是Fragment
还是Activity
?这似乎是用片段或其他地方编写的代码。因为getPreferences()
是活动的方法,您需要具有活动的实例才能调用它。
只有一个Activity实例,并按如下所示进行调用。片段的示例:-
btnStyle.setOnClickListener() {
styleHasChanged = !styleHasChanged;
if(styleHasChanged == true){
btnStyle.setText("true")
}else{
btnStyle.setText("false")
}
val sharedPref : SharedPreferences?= activity?.getPreferences(Context.MODE_PRIVATE);
sharedPref?.edit()?.putBoolean("bla", styleHasChanged)?.apply()
}
答案 2 :(得分:0)
尝试通过应用程序上下文打开sharedPreferences,如下所示:
application.getSharedPreferences("Your preference name", Context.MODE_PRIVATE)
您需要的是打开首选项的上下文。