未解决的参考:getPreferences

时间:2019-06-19 08:02:57

标签: android kotlin sharedpreferences

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



        }

3 个答案:

答案 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)

您需要的是打开首选项的上下文。