Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关键词";这";不';在监听器中不工作_Java_Android_Actionlistener_Android Context - Fatal编程技术网

Java 关键词";这";不';在监听器中不工作

Java 关键词";这";不';在监听器中不工作,java,android,actionlistener,android-context,Java,Android,Actionlistener,Android Context,我调用方法,其中一个参数是OnPreferenceChangeListener中的context。但当我写“这个”时,我得到了一个错误。我试图编写getContext()而不是这个,但它也不起作用。请告诉我,我能做什么 public static class MyPreferenceFragment extends PreferenceFragment { @Override public void onCreate(final Bundle savedInstanceState

我调用方法,其中一个参数是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;
            }
        });
    }
}

因为您正在
首选项中使用
。OnPreferenceChangeListener
是对
首选项的引用。OnPreferenceChangeListener
本身在该范围内,而不是
MyPreferenceFragment
。如果要传递对
MyPreferenceFragment
的引用,请按如下方式修改代码:

DatabaseHelper.updItem(MyPreferenceFragment.this, s, "my_appearance", "backgroundPatters", 1);
DatabaseHelper.updItem(getContext(), s, "my_appearance", "backgroundPatters", 1);
您可以在此处阅读有关此的更多信息: 编辑:如果
DatabaseHelper.updItem
需要
Context
,则可以使用
getActivity()
getContext()
获取
Context
并将其传递给
DatabaseHelper.updItem
。大概是这样的:

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

使用
MyPreferenceFragment。这个
好吧,你会得到什么样的错误?这是否暗示了什么?当执行
onPreferenceChange()
方法时
这是对该方法所属对象的引用。在您的例子中,它是由
新首选项创建的对象。OnPreferenceChangeListener()
。Bare
始终引用它在其方法中显示的对象。在您的代码中,这是
Preference.OnPreferenceChangeListener
的一个实例,它不太可能是您要传递给
DatabaseHelper.Updatem
.luk2302的对象-将方法'Updatem'的1s参数从'Context'更改为'MyPreferenceFragment'。这是不可行的。我再次遇到相同的错误-将方法'Updatem'的第一个参数从'Context'更改为'MyPreferenceFragment'