Ich versuche, eine Bedingung festzulegen und wie folgt auf wahr oder falsch zu setzen, es wird jedoch immer Falsch zurückgegeben.
boolean checked = (categoriesCursor.getString(3) == "1") ? true
: false;
Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);
Wenn ich versuche, die Werte auszugeben, bekomme ich folgendes.
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
Es gibt die ganze Zeit false
zurück, weil Sie reference und nicht strings vergleichen. Sie meinten wahrscheinlich stattdessen:
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true
: false;
Was ist gleichbedeutend damit:
boolean checked = categoriesCursor.getString(3).equals("1");
Und falls categoriesCursor.getString(3)
null
sein kann, sind Sie stattdessen sicherer:
boolean checked = "1".equals(categoriesCursor.getString(3));
Verwenden Sie equals
anstelle von ==
boolean checked = (categoriesCursor.getString(3).equals("1"));
Versuchen Sie es mit diesem
(categoriesCursor.getString(3).equals("1")) ? true : false;
Verwenden Sie categoriesCursor.getString(3).equals("1")
anstelle von ==
Um Strings zu vergleichen, müssen Sie zunächst die Methode equals
verwenden:
categoriesCursor.getString(3).equals("1")
Zweitens brauchen Sie hier nicht den ternären Operator. equals
führt bereits zu einem booleschen Wert, also weisen Sie es einfach zu:
boolean checked = categoriesCursor.getString(3).equals("1");
Ändern Sie es zu diesem:
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true : false;
Verwenden Sie ==
nicht zum Vergleichen des String-Inhalts.
HINWEIS: Der ==
-Operator kann in Java nicht überladen oder geändert werden. Wenn Sie object1 == object2
verwenden, wobei object1
und object2
Strings oder ein anderes Objekt sind, prüfen Sie, ob die Referenzen auf dasselbe zugrunde liegende Objekt verweisen. Dies wird den Inhalt nicht vergleichen.
Zunächst ist kein ternärer Operator erforderlich. Dann müssen Sie equals()
anstelle von ==
verwenden. Der Operator ==
prüft, ob die Referenzen auf die Objekte gleich sind.