2012-02-02 38 views
3

基本上我想在可繪製的資源之間切換,而我不知道如何去做。我把它寫在一個If語句中,但是它太長而且雜亂,並且沒有按照我想要的方式執行,因爲如果他們輸入了錯誤的字母,它就不會停止。圖片之間的開關盒

我想要做的是如果用戶輸入一個字母,背景將改變爲下一個字母后,例如,如果用戶輸入A後臺將變爲B,如此等等。它現在可以正常工作,但問題是如果用戶使用字母A並且用戶錯誤地輸入字母P,則背景將切換到Q而不是告訴用戶他們錯了。

我確實有這個代碼作爲一個else,而不僅僅是If語句,但我只是想我今天會改變它。任何人都可以解釋我如何將這個If語句放入case語句中嗎?感謝您的幫助

   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

你可以用枚舉以及 – 2012-02-02 06:56:41

+0

什麼是枚舉和會是什麼呢? – 2012-02-02 07:31:12

+0

你不能在開關情況下使用字符串...不要混淆字符串和字符,所以枚舉將允許你這樣做。看看@鏈接http://www.javabeat.net/tips/171-how-to-use-enum-in-switch.html – 2012-02-02 08:11:46

回答

2

使用以下

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

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

通過這個if語句來切換情況下,你可以轉換:

你也可以擁有繪製陣列,那麼你也不需要使用開關盒:

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

然後設置顏色會

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

你知道我在哪裏可以得到關於int []數組的教程,現在即將使用開關盒(char),但我想再次理解數組。非常感謝 – 2012-02-02 07:35:44

+0

不知道你在做什麼。 – jeet 2012-02-02 07:42:42

+0

基本上我想了解更多關於如何設置數組的知識,你知道我可以去哪裏瞭解更多關於設置數組並將其放入程序的信息, – 2012-02-02 07:50:55

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

這可能是一個更好的辦法

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

下一個是字母表中[圓]下一個字符。

好運