在活动中我加载首选项,如:
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)
我该怎么办?
答案 0 :(得分:2)
在活动中创建此基本适配器的实例时,必须传递应用程序上下文。
并将上下文声明为基本适配器构造函数中的属性。
答案 1 :(得分:1)
一般情况下,你必须使用YourActivity.this而不是getApplicationContext(),特别是你的适配器。
最好的问候。
(编辑如下)
然后试试这个:
class ExpandBaseAdapter {
Context mContext;
void ExpandBaseAdapter(Context context) {
mContext = context;
}
}
并在需要的地方使用mContext.getSharedPreferences()。
答案 2 :(得分:0)
将Context对象作为参数传递给LoadFontSize()
,并使用它来获取共享的首选项。