SharedPreferences - java.lang.Boolean 无法转换为 java.lang.String

Isa*_*lle 3 android sharedpreferences

我对不应该抛出的异常感到困惑。\n错误如下:

\n\n
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我的代码不会尝试将布尔值转换为字符串 \xc3\x94_o\n编译器在指示异常来自何处时可能是错误的吗?我用的是华为

\n\n

这部分触发异常:

\n\n
if(SharedPreferencesManager.getUserMRZ(ScanEUID.this).equals("0")\n&& SharedPreferencesManager.getUserDocumentIdFront(ScanEUID.this) != null \n&& SharedPreferencesManager.getUserDocumentIdBack(ScanEUID.this) != null)\n{\n
Run Code Online (Sandbox Code Playgroud)\n\n

相关方法如下

\n\n
public static String getUserMRZ(Context context){\n    return getSharedPreferences(context).getString(Constants.USER_HAS_MRZ, "0");\n}\npublic static String getUserDocumentIdFront(Context context) {\n    return getSharedPreferences(context).getString(Constants.USER_DOCUMENT_ID_FRONT, null);\n}\npublic static String getUserDocumentIdBack(Context context) {\n    return getSharedPreferences(context).getString(Constants.USER_DOCUMENT_ID_BACK, null);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

setMRZ 方法

\n\n
public static void setUserMRZ(Context context, String has_mrz){\n        final SharedPreferences.Editor editor = getSharedPreferences(context).edit();\n        editor.putString(Constants.USER_HAS_MRZ, has_mrz);\n        editor.apply();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

AZR*_*34L 5

检查你的设置器,我刚刚遇到了同样的问题,我发现我错误地做了一个错误的复制/意大利面,并在设置器中使用了该值的键作为布尔值......

  • 如果您安装的应用程序正在使用布尔首选项,而您现在希望它是字符串,则必须重新安装您的应用程序。 (2认同)