使用 OnPreferenceChangeListener 后如何检查首选项的值?

How do I check the value of a preference after using OnPreferenceChangeListener?

目前,我正在使用 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 语句以检查用户何时更改为特定值。

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

但是,这不起作用。据我了解,Object newValue 是新选择的选项,因此在我的例子中,Audio Codec 1、2 或 3 的值分别为 1、2 或 3。我试图将 newValue 转换为 int 但这也不起作用。

我在下面包含了我的 listEntriesvalues

 <!-- 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>

我真的受困于此,因此非常感谢任何帮助,弄清楚这一点将几乎完成我的应用程序。如果您需要更多信息,请告诉我。

首先你的 if 语句检查是错误的,因为新值是一个对象:

这样做:

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