未解析的参考:getPreferences

问题描述 投票:0回答:4

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



        }
android kotlin sharedpreferences
4个回答
14
投票

对于 KOTLIN

如果是“活动”,则使用

this@ActivityName

var sharedPref : SharedPreferences = [email protected](Context.MODE_PRIVATE);

如果是片段,则使用

activity!!

var sharedPref : SharedPreferences = activity!!.getPreferences(Context.MODE_PRIVATE);

6
投票

这是

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()
    }

1
投票

尝试通过应用程序上下文打开sharedPreferences,如下所示:

application.getSharedPreferences("Your preference name", Context.MODE_PRIVATE)

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


0
投票

我的 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()
© www.soinside.com 2019 - 2024. All rights reserved.