2011-11-05 3 views
1

Je fais un projet dans Android. Je suis un begineer dans android aussi. Dans mon application Android, j'utilise php comme fournisseur de service web. dans mon code php pour l'authentification je vérifie l'utilisateur vaidité et la chaîne de retour 1 ou 0. Dans l'application android je reçois la chaîne. mais quand je le vérifie dans une condition if, il échoue. Est-ce dû à un problème de compatabilité?Android - encodage php chaîne

dans le code php

..... 
if($auth) { 
echo '1'; 
} 
else { 
echo '0'; 
} 

dans Android

//get the code and saved in to string loginStatus; 
if(loginStatus == "1") { 
//not getting into this part if the loginStatus is 1; 
} 
else { 
//getting into this part 
} 
+0

Essayez de débogage. Quelle est la valeur de 'loginStatus'? –

Répondre

1

l'opérateur vérifie == pour voir si deux références de chaîne indiquent exactement la même instance de chaîne. Donc même si vous avez deux chaînes qui ont toutes deux la valeur "1", l'opérateur == peut toujours retourner false.

Pour comparer les chaînes de caractères par caractère utilisation String.equals:

if (loginStatus.equals("1")) { 

Pour voir la différence entre == et equals voir cet exemple simplifié:

String a = new String("1"); 
String b = new String("1"); 
System.out.println("a == b: " + (a == b)); 
System.out.println("a.equals(b): " + a.equals(b)); 

Résultat:

 
a == b: false 
a.equals(b): true 

Voir ce code en cours d'exécution en ligne: ideone


Note: si loginStatus peut vous être nul besoin aussi de vérifier cela aussi, ou bien inverser l'ordre des chaînes afin que la chaîne constante est d'abord:

if (loginStatus != null && loginStatus.equals("1")) { 

Ou:

if ("1".equals(loginStatus)) { 
+0

j'ai travaillé merci mon pote. mais pouvez-vous élaborer le problème avec == opérateur. parce que je suis nouveau au développement de androïde et de Java. pouvez-vous partager un poste ou un article ou si cela ne vous dérange pas pouvez-vous poster la raison ici ... –

+0

sur le doute ce que signifie par la même instance de chaîne. comme si j'avais un test de chaîne variable = '1'; et la réponse de chaîne = entity.tostring(); est le test == réponse renvoie false. ils sont tous du même type. –

+0

est-il possible pour les nombres entiers:) ... –