未解决的参考:getPreferences

Vas*_*lev 3 android sharedpreferences kotlin

我试图存储一个布尔值,每次单击按钮时都会更改该值。我想使用共享首选项来执行此操作,但是我一直遇到此错误:未解析的引用: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()



        }
Run Code Online (Sandbox Code Playgroud)

Int*_*iya 8

为了 KOTLIN

如果活动然后使用 this@ActivityName

var sharedPref : SharedPreferences = this@ActivityName.getPreferences(Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

如果片段然后使用 activity!!

var sharedPref : SharedPreferences = activity!!.getPreferences(Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)


ADM*_*ADM 5

这是一个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()
    }
Run Code Online (Sandbox Code Playgroud)