2017-04-08 2 views
-1

Je crée une application qui met à jour les utilisateurs sur le score d'un match de football soit en temps réel, soit en résultat final. Au moins un score doit être saisi pour que le TextView soit mis à jour et que le score correspondant soit affiché. Je vérifie au moins 1 d'une paire de champs EditText est pas vide en utilisant le code suivant:Android Studio Si déclaration avec || et && opérateur

if(!(et_current.getText().toString().isEmpty())||(!(et_final.getText().toString().isEmpty())) 
&& (!(et_current2.getText().toString().isEmpty())||(!(et_final2.getText().toString().isEmpty()))){ 
    if(!(et_final.getText().toString().isEmpty())) 
       tv_final.setText(et_final.getText().toString()); 
    else 
       tv_current.setText(et_current.getText().toString()); 

    if(!(et_final2.getText().toString().isEmpty())) 
       tv_final2.setText(et_final2.getText().toString()); 
    else 
       tv_current2.setText(et_current2.getText().toString()); 
} 

Je veux être en mesure de régler le TextView correct, donc j'ai une autre instruction if dans l'original si la déclaration pour voir à ce que le bon score soit mis à jour.

Lorsque je lance le code, je ne semble pas avoir dépassé la première instruction if. Est-ce que j'utilise le bon format ou existe-t-il un meilleur moyen de compléter ces vérifications?

Merci!

+0

Deux commentaires: Ajoutez des vérifications 'null' sur ces chaînes et utilisez également des parenthèses. –

+0

Essayez d'utiliser '==" "' au lieu de 'isEmpty()', peut-être que cela résoudra quelque chose –

+1

@ itay_421 '==" "' ne fonctionnera pas. Utilisez '.equals (" ")' à la place. –

Répondre

2

Pour l'amour de lisibilités, obtenir certaines variables vont

boolean currentEmpty = et_current.getText().toString().isEmpty(); 
    boolean current2Empty = et_current2.getText().toString().isEmpty(); 
    boolean finalEmpty = et_final.getText().toString().isEmpty(); 
    boolean final2Empty = et_final2.getText().toString().isEmpty(); 

Et puis votre code peut être beaucoup plus propre. Quelque chose comme

if((!currentEmpty || !finalEmpty) || (!current2Empty || !final2Empty)) { 

     if(finalEmpty) { 
      tv_current.setText(et_current.getText()); 
     } 
     else { 
      tv_final.setText(et_final.getText()); 
     } 

     if(final2Empty) { 
      tv_current2.setText(et_current2.getText()); 
     } 
     else { 
      tv_final2.setText(et_final2.getText()); 
     } 
    } 

Je ne suis pas sûr que ce soit tout à fait correct que l'exigence est pas tout à fait clair pour moi, mais il devrait être atleast un bon départ pour suivre ce qui se passe.