J'essaie de définir une condition et de définir true ou false comme suit, mais le résultat est toujours faux.
boolean checked = (categoriesCursor.getString(3) == "1") ? true
: false;
Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);
Quand j'essaie de sortir les valeurs, j'obtiens ce qui suit.
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
Il renvoie false
tout le temps parce que vous comparez références , pas chaînes . Vous avez probablement voulu dire ceci à la place:
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true
: false;
Ce qui se trouve être équivalent à ceci:
boolean checked = categoriesCursor.getString(3).equals("1");
Et si categoriesCursor.getString(3)
peut être null
, vous serez plus en sécurité en procédant de la sorte:
boolean checked = "1".equals(categoriesCursor.getString(3));
Utilisez equals
au lieu de ==
boolean checked = (categoriesCursor.getString(3).equals("1"));
Essayez d'utiliser ceci
(categoriesCursor.getString(3).equals("1")) ? true : false;
Utilisez categoriesCursor.getString(3).equals("1")
au lieu de ==
Premièrement, pour comparer des chaînes, vous devrez utiliser la méthode equals
:
categoriesCursor.getString(3).equals("1")
Deuxièmement, vous n’avez pas besoin de l’opérateur ternaire ici. equals
donne déjà un booléen, donc assignez-le simplement:
boolean checked = categoriesCursor.getString(3).equals("1");
Changez-le en ceci:
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true : false;
N'utilisez pas ==
pour comparer le contenu de la chaîne.
REMARQUE: L'opérateur ==
ne peut pas être surchargé ni modifié en Java. Si vous utilisez object1 == object2
, où object1
et object2
sont des chaînes ou tout autre objet, vérifiez si les références pointent sur le même objet sous-jacent. Cela ne comparera pas le contenu.
D'abord, il n'y a pas besoin d'opérateur ternaire. Ensuite, vous devez utiliser equals()
au lieu de ==
. Parce que l'opérateur ==
vérifie si les références aux objets sont égales.