java - Android:IF 语句在通过首选项设置时不起作用

标签 java android string preferences

我在使用基于我偏好的字符串的 IF 语句时遇到问题。

代码如下:

  preferences = PreferenceManager.getDefaultSharedPreferences(this);
         String themePref = preferences.getString("theme", "null");
         Log.i("Theme", "Current theme is " + themePref );


         if (themePref == "dark"){
             setTheme(android.R.style.Theme_Black);
         }else{
             setTheme(android.R.style.Theme_Light);
         }

此时我有两个选择;光与暗。代码成功地根据需要将 themePref 设置为浅色或深色,我已经通过调试确认,但由于某种原因,if 语句失败了。我已经手动将一个字符串设置为“dark”,然后它就可以正常工作了。

我是不是漏掉了什么?为什么来自首选项的字符串会以不同的方式处理?

如有任何帮助,我们将不胜感激。

谢谢, 乔希

最佳答案

您应该使用 themePref.equals("dark")(或者更好的 "dark".equals(themePref))来比较字符串。 == 告诉您字符串实例是否相同,但是两个实例可以具有相同的值并且不是相同的实例。

关于java - Android:IF 语句在通过首选项设置时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060011/

相关文章:

除第一个字符外的 Python 字符串替换

java - ImageView 在 Android 中不起作用

JAVA - 我是否应该在使用后为每个实例化对象设置 null?

Android:如何以编程方式获取安装程序文件名?

连接c中命令行参数的第一个字符

c - 将 C 中给定文本中的每个单词替换为另一个单词

java - Google Drive API - 在 ListView 中填充文件列表

java - 依赖注入(inject)框架插入Spring单例模式的使用

android - 如何更新媒体 Controller android的进度条?

android - 尝试使用 phonegap 在模拟器上运行 android 应用程序时出错,我该如何解决?