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

Jos*_*osh 2 java string android 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);
         }
Run Code Online (Sandbox Code Playgroud)

我现在有两种选择; 光与暗.代码根据需要成功地将themePref设置为亮或暗,并且我已通过调试确认,但由于某种原因if语句失败.我已手动将字符串设置为"黑暗",然后它正常工作.

我在这里错过了什么吗?为什么来自首选项流程的字符串会有所不同?

任何帮助将不胜感激.

谢谢,乔希

joh*_*man 8

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

  • 因为在`themePref.equals("dark")`中,themePref可能为null,在这种情况下,您将获得NullPointerException.替代版本没有这样的问题,如果themePref为null,则只返回false. (2认同)