关键字"这"在Listener中不起作用

时间:2017-10-14 16:24:31

标签: java android actionlistener android-context

我在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;
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

因为您在this内使用Preference.OnPreferenceChangeListenerthis在该范围内引用了Preference.OnPreferenceChangeListener,而不是MyPreferenceFragment。如果您想传递对MyPreferenceFragment的引用,请修改您的代码:

DatabaseHelper.updItem(MyPreferenceFragment.this, s, "my_appearance", "backgroundPatters", 1);

您可以在此处详细了解thishttps://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

编辑:如果DatabaseHelper.updItem需要Context,那么您可以使用getActivity()getContext()获取Context并将其传递给{{1} }}。像这样的东西:

DatabaseHelper.updItem