2017-05-10 3 views
0

Ich bin verwirrt mit einer Ausnahme, die für etwas geworfen wird, das nicht sollte. Der Fehler ist die folgende:SharedPreferences - java.lang.Boolean kann nicht in java.lang.String umgewandelt werden

java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String 

Aber, mein Code nicht versucht, einen Booleschen zu String o_O Ist zu werfen es möglich, dass der Compiler bei der Anzeige falsch ist, wo die Ausnahme herkommt? Ich bin mit einem Huawei

diesem Teil wird die Ausnahme auslöst:

if(SharedPreferencesManager.getUserMRZ(ScanEUID.this).equals("0") 
&& SharedPreferencesManager.getUserDocumentIdFront(ScanEUID.this) != null 
&& SharedPreferencesManager.getUserDocumentIdBack(ScanEUID.this) != null) 
{ 

die dazugehörigen Methoden die folgenden

public static String getUserMRZ(Context context){ 
    return getSharedPreferences(context).getString(Constants.USER_HAS_MRZ, "0"); 
} 
public static String getUserDocumentIdFront(Context context) { 
    return getSharedPreferences(context).getString(Constants.USER_DOCUMENT_ID_FRONT, null); 
} 
public static String getUserDocumentIdBack(Context context) { 
    return getSharedPreferences(context).getString(Constants.USER_DOCUMENT_ID_BACK, null); 
} 

Die setMRZ Methode

public static void setUserMRZ(Context context, String has_mrz){ 
     final SharedPreferences.Editor editor = getSharedPreferences(context).edit(); 
     editor.putString(Constants.USER_HAS_MRZ, has_mrz); 
     editor.apply(); 
} 
+0

Wenn es jemals einen String Witz gegeben hat h Dieser Schlüssel (USER_HAS_MRZ), auch wenn er zufällig ausbleibt, bleibt so lange bestehen, bis Sie die Daten der App löschen oder neu installieren. Versuchen Sie es erneut zu installieren, um zu sehen, ob es noch auftritt. – Denny

+2

Überprüfen Sie, wo Sie zuerst die Einstellung USER_HAS_MRZ erstellen. Sie informieren wahrscheinlich einen booleschen Wert. – Jonas452

+0

Deinstalliert es und leider gleichen Fehler. So seltsam. – Isabelle

Antwort

-1
+2

Ich bin mir sicher, dass das OP weiß, welche Methode zu verwenden ist, es wird beschrieben, dass nur Strings mit der 'setUserMRZ()' Methode gespeichert werden – Denny

+0

@Isabelle Sind Sie sicher, dass die Exception im 'SharedPreferencesManager.getUserMRZ (ScanEUID.this) .equals ("0") 'Linie? –

+0

Wenn ich mich darauf beziehe, was der Compiler erwähnt, ja. – Isabelle

1

Überprüfen Sie Ihre Setter verwenden Ich hatte gerade das gleiche Problem und ich entdeckte, dass ich versehentlich eine schlechte Kopie/Pasta gemacht und den Schlüssel für diesen Wert in einem Setter für einen booleschen Wert verwendet hatte ...

Verwandte Themen