Как проверить значение предпочтения после использования OnPreferenceChangeListener? - PullRequest
1 голос
/ 20 апреля 2020

В настоящее время я использую OnPreferenceChangeListener, чтобы проверить, когда пользователь изменяет ListPreference в моем приложении (код ниже), и печатаю строку, чтобы проверить это.

final Preference audioCodec = findPreference("codec");
      assert audioCodec != null;
      audioCodec.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
      @Override
      public boolean onPreferenceChange(Preference preference, Object newValue) {
            System.out.println("Clicked");
     return true;
   }
});

Я попытался включить оператор if ниже, чтобы проверить, когда пользователь изменит значение c.

 if (newValue == "1") {
    System.out.println("Clicked");
 }

Однако это не работает. Насколько я понимаю, Object newValue - это новая выбранная опция, поэтому в моем случае это значение Audio Code c 1, 2 или 3, которое равно 1, 2 или 3 соответственно. Я пытался привести newValue к int, но это также не сработало.

Я включил listEntries и values ниже.

 <!-- Audio codec list  -->
<string-array name="codecListArray">
    <item>Audio codec 1</item>
    <item>Audio codec 2</item>
    <item>Audio codec 3</item>
</string-array>

<string-array name="codecListValues">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>

Я действительно застрял с этим так что любая помощь будет очень признательна, если разобраться в этом, то в конечном итоге мое приложение закончится sh. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

2 голосов
/ 20 апреля 2020

Сначала проверка вашего оператора if неверна, потому что новые значения - это объект:

сделайте это:

String value = (String)newValue;
 if (value.equals("1")) {
    System.out.println("Clicked");
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...