Неразрешенная ссылка: getPreferences - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь сохранить логическое значение, которое изменяется при каждом нажатии кнопки.Я хочу сделать это, используя общие настройки, но продолжаю сталкиваться с этой ошибкой: Неразрешенная ссылка: 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 ]

2 голосов
/ 19 июня 2019

Для KOTLIN

Если активность, тогда используйте this@ActivityName

var sharedPref : SharedPreferences = this@ActivityName.getPreferences(Context.MODE_PRIVATE);

Если фрагмент, тогда используйте activity!!

var sharedPref : SharedPreferences = activity!!.getPreferences(Context.MODE_PRIVATE);
1 голос
/ 19 июня 2019

Это Fragment или Activity?Это кажется кодом, написанным фрагментом или где-то еще.Потому что getPreferences() - это метод действия, и вам нужен экземпляр 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()
    }
0 голосов
/ 19 июня 2019

Попробуйте открыть sharedPreferences через контекст приложения, например:

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

Все, что вам нужно, это контекст для открытия настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...