我在OnPreferenceChangeListener中调用方法,其中一个参数 - context。但是当我写道:"这个"时,我得到一个错误。我试着编写getContext()而不是这个,但它也不起作用。请告诉我,我能做些什么?
public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
final ListPreference lp = (ListPreference) findPreference("background");
lp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String s = String.valueOf(newValue);
/*error*/
DatabaseHelper.updItem(this, s, "my_appearance", "backgroundPatters", 1);
return true;
}
});
}
}
答案 0 :(得分:1)
因为您在this
内使用Preference.OnPreferenceChangeListener
而this
在该范围内引用了Preference.OnPreferenceChangeListener
,而不是MyPreferenceFragment
。如果您想传递对MyPreferenceFragment
的引用,请修改您的代码:
DatabaseHelper.updItem(MyPreferenceFragment.this, s, "my_appearance", "backgroundPatters", 1);
您可以在此处详细了解this
:https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
编辑:如果DatabaseHelper.updItem
需要Context
,那么您可以使用getActivity()
或getContext()
获取Context
并将其传递给{{1} }}。像这样的东西:
DatabaseHelper.updItem