2012-02-02 3 views
3

Fondamentalement, je veux basculer entre les ressources drawable, et je ne peux pas comprendre comment je vais le faire. J'ai écrit tout cela dans une déclaration If, mais c'est trop long et désordonné et ce n'est pas en train de l'exécuter comme je le veux parce que ça ne s'arrête pas s'ils entrent la mauvaise lettre. Ce que j'essaie de faire est que si l'utilisateur entre une lettre, l'arrière-plan passera à la lettre suivante après que, par exemple, Si l'utilisateur saisit A, l'arrière-plan passera à B, et ainsi de suite. Cela fonctionne actuellement, mais ce qui ne va pas, c'est que si l'utilisateur est sur la lettre A et que l'utilisateur entre par erreur la lettre P, l'arrière-plan passera à Q plutôt que de dire à l'utilisateur qu'il a tort.Bascule entre les images

J'ai eu ce code comme un autre si plutôt que juste Si des déclarations, mais j'ai juste pensé que je le changerais aujourd'hui. Quelqu'un peut-il expliquer comment je mettrais cette déclaration If dans une déclaration de cas? Nous vous remercions de votre aide

   if (words.getText().toString().equalsIgnoreCase("A")) { 

       gestureViewer.setBackgroundResource(R.drawable.lettersb); 

      } else { 
      onDestroy(); 
      } 
      if (words.getText().toString().equalsIgnoreCase("B")) { 
       gestureViewer.setBackgroundResource(R.drawable.lettersc); 
      } else { 
      } 
      if (words.getText().toString().equalsIgnoreCase("C")) { 
       gestureViewer.setBackgroundResource(R.drawable.lettersd); 
      } else { 
      } 
      if (words.getText().toString().equalsIgnoreCase("D")) { 
        gestureViewer.setBackgroundResource(R.drawable.letterse); 
      } else { 
      } 
      if 
       (words.getText().toString().equalsIgnoreCase("E")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersf); 
      } else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("F")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersg); 

      } else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("G")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersh); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("H")) { 

        gestureViewer.setBackgroundResource(R.drawable.lettersi); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("I")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersj); 
      } else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("J")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersk); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("K")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersl); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("L")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersm); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("M")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersn); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("N")) { 
        gestureViewer.setBackgroundResource(R.drawable.letterso); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("O")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersp); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("P")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersq); 
      }else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("Q")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersr); 
      } else { 
      } 
       if (words.getText().toString().equalsIgnoreCase("R")) { 
        gestureViewer.setBackgroundResource(R.drawable.letterss); 
      } else { 
        } 

       if (words.getText().toString().equalsIgnoreCase("S")) { 

        gestureViewer.setBackgroundResource(R.drawable.letterst); 
      }else { 

      } 

       if (words.getText().toString().equalsIgnoreCase("T")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersu); 
      }else { 

      } 

       if (words.getText().toString().equalsIgnoreCase("U")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersv); 
      }else { 

      } 
       if (words.getText().toString().equalsIgnoreCase("V")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersw); 
      }else { 

      } 
       if (words.getText().toString().equalsIgnoreCase("W")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersx); 
      }else { 

      } 
       if (words.getText().toString().equalsIgnoreCase("X")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersy); 
      }else { 

      } 
       if (words.getText().toString().equalsIgnoreCase("Y")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersz); 
      }else { 

      } 
       if (words.getText().toString().equalsIgnoreCase("Z")) { 
        gestureViewer.setBackgroundResource(R.drawable.lettersa); 

      } else { 

      } 
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after){ 

     } 
     public void afterTextChanged(Editable s) { 


     } 
}); 

    } 
+0

vous pouvez utiliser ENUM ainsi –

+0

Qu'est-ce ENUM et que faut-il faire? –

+0

vous ne pouvez pas utiliser de chaîne dans le boîtier de commutation ... ne confondez pas avec la chaîne et char, donc enum vous permettra de le faire. Regardez le lien http://www.javabeat.net/tips/171-how-to-use-enum-in-switch.html –

Répondre

2

suite à l'utilisation

char ch=words.getText().toString().charAt(0)); 

    switch(ch-'A') 
    { 
     case 0: 
      //A; 
      break; 
     case 1: 
      //B; 
      break; 
    ..... 
    } 

En cela, vous pouvez convertir si des déclarations pour changer le cas:

vous pouvez aussi avoir tableau drawable , alors vous n'aurez pas besoin d'utiliser le boîtier de commutateur également:

int[] arr=new int[]{R.id.drawable_A, .......}; 

alors la couleur serait mise

char ch=words.getText().toString().charAt(0)); 
int index=ch-'A'; 
view.setBackgroundResource(index); 
+0

Savez-vous où je peux obtenir un tutoriel sur les tableaux int [], pour maintenant je vais utiliser le boîtier de commutateur (char), mais je voudrais comprendre le tableau plus pour une autre fois. Merci beaucoup –

+0

pas sûr de ce que vous voulez. – jeet

+0

Fondamentalement, je veux en savoir plus sur la façon de configurer le tableau, savez-vous où je peux aller pour en savoir plus sur la mise en place de la matrice et de le mettre dans le programme, –

1
private void set(i) {    

    switch(i) {  
    case 1: 
     words.getText().toString().equalsIgnoreCase("A")) { 
     gestureViewer.setBackgroundResource(R.drawable.lettersf); 
     break; 
    case 2: 
     words.getText().toString().equalsIgnoreCase("B")) { 
     gestureViewer.setBackgroundResource(R.drawable.lettersf); 
     break; 
     . 
     ....... 
    } 
} 
0

Cela pourrait être une meilleure approche

char current = words.getText().toString().charAt(0)); 
char next = ((ch-'A') + 1) % 26 + 'A'; 
gestureViewer.setBackgroundResource(R.drawable.getLetter(next)); 

est suivant le caractère suivant [circulairement] dans l'alphabet.

Bonne chance