Android使用BaseAdapter类中的sharedpreferences

时间:2012-04-01 20:09:32

标签: android sharedpreferences

在活动中我加载首选项,如:

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

SharedPreferences sharedPreferences;在全球宣布。

我有一个运行ExpandableListView的ExpandBaseAdapter类。我想在这个类中处理fontsizes,但它显示了我

  

方法getApplicationContext()未定义类型   ExpandBaseAdapter

错误。

我尝试添加sharedPreferences = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE); 但后来我只得到默认值。

如果我添加sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ExpandBaseAdapter.this); 我得到了

  

方法中的getDefaultSharedPreferences(Context)方法   PreferenceManager不适用于参数   (ExpandBaseAdapter)

我该怎么办?

3 个答案:

答案 0 :(得分:2)

在活动中创建此基本适配器的实例时,必须传递应用程序上下文。

并将上下文声明为基本适配器构造函数中的属性。

答案 1 :(得分:1)

一般情况下,你必须使用YourActivity.this而不是getApplicationContext(),特别是你的适配器。

最好的问候。

(编辑如下)

然后试试这个:

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

并在需要的地方使用mContext.getSharedPreferences()。

答案 2 :(得分:0)

将Context对象作为参数传递给LoadFontSize(),并使用它来获取共享的首选项。