Android с использованием общих настроек в классе BaseAdapter - PullRequest
0 голосов
/ 02 апреля 2012

В активности я загружаю настройки вроде:

   public void LoadFontSize(){
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        loadedFontSize = sharedPreferences.getString("fontsize", "font3");
      }

И SharedPreferences sharedPreferences; объявлено глобально.

У меня есть класс ExpandBaseAdapter, работающий с ExpandableListView. Я хочу обработать шрифты в этом классе, но он показывает мне

Метод getApplicationContext () для типа не определен ExpandBaseAdapter

ошибка.

Я пытался добавить sharedPreferences = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE); но тогда я получаю только значение по умолчанию.

Если я добавлю sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ExpandBaseAdapter.this); Я получаю

Метод getDefaultSharedPreferences (Context) в типе PreferenceManager не применим для аргументов (ExpandBaseAdapter)

Что мне делать?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Вы должны передать контекст приложения при создании экземпляра этого базового адаптера в своей деятельности.

и объявить контекст как атрибут в конструкторе базового адаптера.

1 голос
/ 02 апреля 2012

Вы должны использовать YourActivity.this вместо getApplicationContext (), как в целом, так и особенно в вашем адаптере.

С уважением.

(Изменить ниже)

Попробуйте это тогда:

class ExpandBaseAdapter {
  Context mContext;
  void ExpandBaseAdapter(Context context) {
    mContext = context;
  }
}

и используйте mContext.getSharedPreferences () там, где вам это нужно.

0 голосов
/ 02 апреля 2012

Передайте объект Context в LoadFontSize() в качестве параметра и используйте его, чтобы получить доступ к общим префиксам.

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