我试图存储一个布尔值,每次单击按钮时该值都会更改。我想使用共享首选项来执行此操作,但是我不断遇到此错误: 未解决的参考: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()
}
对于 KOTLIN
如果是“活动”,则使用
this@ActivityName
var sharedPref : SharedPreferences = [email protected](Context.MODE_PRIVATE);
如果是片段,则使用
activity!!
var sharedPref : SharedPreferences = activity!!.getPreferences(Context.MODE_PRIVATE);
这是
Fragment
还是Activity
?这似乎是用片段或其他地方编写的代码。因为 getPreferences()
是 Activity 的方法,你需要有 Activity 的实例才能调用它。
只要有一个 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()
}
尝试通过应用程序上下文打开sharedPreferences,如下所示:
application.getSharedPreferences("Your preference name", Context.MODE_PRIVATE)
您所需要的只是打开首选项的上下文。
我的 kotlin 解决方案是:
//declarate in your class
private lateinit var sharedpreferences: SharedPreferences
const val TOKEN_KEY = "token"
//declarate inside onCreate of activity
sharedpreferences = requireContext().getSharedPreferences(SHARED_PREFS,Context.MODE_PRIVATE);
//get token_activo storage in android
token_activo = sharedpreferences.getString(TOKEN_KEY, null)
//save in android
val editor = sharedpreferences.edit()
editor.putString(TOKEN_KEY, "value_to_save")
editor.apply()