使用 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 但这也不起作用。
我在下面包含了我的 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>
我真的受困于此,因此非常感谢任何帮助,弄清楚这一点将几乎完成我的应用程序。如果您需要更多信息,请告诉我。
首先你的 if 语句检查是错误的,因为新值是一个对象:
这样做:
String value = (String)newValue;
if (value.equals("1")) {
System.out.println("Clicked");
}
目前,我正在使用 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 但这也不起作用。
我在下面包含了我的 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>
我真的受困于此,因此非常感谢任何帮助,弄清楚这一点将几乎完成我的应用程序。如果您需要更多信息,请告诉我。
首先你的 if 语句检查是错误的,因为新值是一个对象:
这样做:
String value = (String)newValue;
if (value.equals("1")) {
System.out.println("Clicked");
}