Android: как установить OnPreferenceClickListener в настройках? - PullRequest
0 голосов
/ 19 июня 2019

Я новичок в программировании для Android, и сначала я хотел бы сделать простую демонстрацию меню опций с SharedPreferences.Я создал базовую структуру, но я не знаю, как прикрепить OnPreferenceClickListener к предпочтению.Тем не менее, я могу использовать метод onSharedPreferenceChanged, но других слушателей событий нет.(Опять же, я новичок, поэтому не знаю, почему это так.)

Я прочитал документацию о шагах по созданию меню: https://developer.android.com/guide/topics/ui/settings/customize-your-settings#java

У меня также естьвидел вопрос здесь: Активность предпочтения по предпочтению Нажмите Слушатель

Я пробовал некоторые из решений, но они не работали вообще.(Я не смог реализовать OnPreferenceClickListener, так что это может быть основной причиной, но я не знаю почему)

Как вы можете видеть, я создал CheckBoxPreference и элемент Preference в PreferenceCategory.(Это в /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'

1 Ответ

1 голос
/ 19 июня 2019

Попробуйте этот код, надеюсь, он вам поможет

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