gpt4 book ai didi

java - choice.getKey.equals() 返回 false

转载 作者:行者123 更新时间:2023-12-01 21:26:06 24 4
gpt4 key购买 nike

我正在使用 PreferenceActivity 并实现 onPreferenceChange 方法。我正在检查哪些首选项发生了更改,以便可以对其进行操作,但是,.equals() 方法始终返回 false。我已经调试了该应用程序,它显示两个字段都返回字符串 student_id。我错过了什么吗?此时,更改来自 student_id_key 偏好设置更改

来自strings.xml

<string name="student_id_key" translatable="false">student_id</string>

onPreferenceChange中的代码

 if(preference.getKey().equals(preference.getContext().getString(R.string.student_id_key))){
//do something here, but its returning false
}

这是调试器的快照,将 x 和 y 显示为两个字符串 enter image description here

我尝试过使用 == 但结果相同 enter image description here

这是我的 prefs.xml 中的元素摘录

  <EditTextPreference
android:capitalize="words"
android:defaultValue="@string/student_id_default"
android:inputType="textCapWords"
android:hint="@string/student_id_hint"
android:key="@string/student_id_key"
android:maxLines="1"
android:maxLength="9"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_title_display_name" />

最佳答案

对于字符串比较,始终使用 .equals,因为 == 永远不会(嗯,很少,除非您将同一变量与其自身进行比较)对字符串起作用,因为它们是不可变的。

编辑:所以,我认为这是因为您在该 block 中没有代码(或任何重要的代码)。在该 block 中添加一条打印语句并查看它是否打印。编译器会优化死代码,因此它可能会让您认为正在发生一些奇怪的事情,而实际上并没有发生。将等于检查输入 boolean 值并查看其计算结果。

关于java - choice.getKey.equals() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com