【问题标题】:Android: How to set an OnPreferenceClickListener on a Preference?Android:如何在首选项上设置 OnPreferenceClickListener?
【发布时间】:2019-06-19 11:03:23
【问题描述】:

我是 Android 编程新手,首先我想用 SharedPreferences 制作一个简单的选项菜单演示。我已经创建了基本结构,但我不知道如何将 OnPreferenceClickListener 附加到 Preference。尽管如此,我可以使用 onSharedPreferenceChanged 方法,但没有其他事件侦听器。 (再说一次,我是初学者,所以我不知道为什么会这样。)

我已阅读有关创建菜单步骤的文档:https://developer.android.com/guide/topics/ui/settings/customize-your-settings#java

我在这里也看到了一个问题:Preference Activity on Preference Click Listener

我已经尝试了一些解决方案,但它们根本不起作用。 (我无法实现 OnPreferenceClickListener,所以这可能是主要原因,但我不知道为什么)

如您所见,我在 PreferenceCategory 中创建了 CheckBoxPreference 和 Preference elem。 (这在 /res/xml/settings_pref.xml 中)

<PreferenceCategory
    android:key="category_basic"
    android:title="Basic settings">
    <CheckBoxPreference
        android:defaultValue="true"
        android:key="my_checkbox"
        android:summaryOff="Off"
        android:summaryOn="On"
        android:title="@string/my_checkbox"
    />
    <Preference
        android:key="my_preference"
        android:title="@string/my_preference"
    />
</PreferenceCategory>

此方法检查 CheckBoxPreference 的状态(选中/未选中) (这是在 /java/MainActivity.java 中)

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // called when I change the state of the CheckBoxPreference
    if (key.equals("my_checkbox")) {
        // some interesting stuff
    }
}

但我的目标是检测用户是否点击了偏好并执行某些操作(例如打开对话框)

onClickPreference.setOnPreferenceClickListener(preference -> {
    // do something
    return true;
});

当我尝试创建点击侦听器时,我收到此错误消息:无法解析符号 'onClickPreference'

【问题讨论】:

  • 分享有Preferences的MainActivity的完整代码,更多代码可以提供帮助

标签: java android sharedpreferences onclicklistener


【解决方案1】:

试试这段代码希望对你有帮助

findPreference("my_preference").setOnPreferenceClickListener(preference -> {
    // do something
    return true;
});

【讨论】:

  • 唯一的问题是它已被弃用,如文档中所述:developer.android.com/reference/android/preference/…。所以可能这就是我收到此错误消息的原因:无法解析方法'findReference(java.lang.String)'
  • 就我而言,我在 Android 8 中运行此代码没有错误,可能问题出在您的 IDEA 上,使缓存无效并重新启动、重建或清理项目,希望对您有所帮助
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多