gpt4 book ai didi

java - 在 android OnPreferenceClickListener 中调用非静态方法

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:05 24 4
gpt4 key购买 nike

/**
* A preference change listener to resynchronize a contact list
*
*/
private static Preference.OnPreferenceClickListener resynchronizeContactsListener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new AlertDialog() {

}
}
}

在上面的代码 fragment 中,我需要调用一个非静态方法,或者创建一个 AlertDialog()。这两个我都很难做到,因为监听器是静态方法。

例如,AlertDialog.Builder() 构造函数需要创建一个 android 上下文对象,但由于该方法是静态的,因此没有上下文。我考虑过将上下文作为参数传递,但是我不确定在不破坏我正在覆盖方法的事实的情况下在哪里这样做。

提前致谢

最佳答案

您可以将 Preference.OnPreferenceClickListener 静态地实现到您自己的类中,并在准备就绪时从您的 Activity 代码中对其进行初始化。 (我假设您出于某种原因需要监听器对象是静态的,您可以取消它!)

private static MyPrefListener myPrefListener = null;

private static class MyPrefListener implements Preference.OnPreferenceClickListener {

private Context mContext;
public MyPrefListener(Context context) {
this.mContext = context;
}

@Override
public boolean onPreferenceClick(Preference preference) {
//USE mContext as the context object here
return false;
}
}

然后在您的 Activity 代码中执行以下操作:

myPrefListener = new MyPrefListener(this);

希望代码结构清晰。

关于java - 在 android OnPreferenceClickListener 中调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com