2016-06-14 82 views
0

我想比較一個按鈕的文本來決定採取這個Android應用程序的行動過程。我收到了一些我不明白的意外行爲。比較Android按鈕文本

clickMeButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (v.getId() == R.id.btnLeft) { 
       Button button = (Button) v; 
       String click = new String("Click me"); 
       String look = new String(button.getText().toString()); 
       Boolean check = new Boolean(look == click); 
       if (button.getText().toString() == "Click me") { 

變量檢查返回false。爲什麼?在調試器中,兩個項目都在他們旁邊列出了「Click me」。我在模擬器中點擊的按鈕顯示「Click me」,其原始文本「Click me」由xml指定。

回答

5

這不是我們如何在Java中進行字符串比較。試試這個

if (button.getText().toString().equals("Click me")) { 

==檢查,如果兩個參數都是相同的對象,而equals()檢查,如果這兩個參數具有相同的值。

1

如果將字符串對象與字符串對象進行比較,則可以。但是你正在比較一個對象與char數組。一個對象永遠不會成爲一個字符數組。對象值可以相等,但對象比較將返回false。因爲這2個變量不一樣。 在Java中,比較字符串的最佳做法是平等的方法。

Boolean check = new Boolean(look == click); // DO NOT 
Boolean check = new Boolean(look.equals(click)); // DO 

if語句也一樣。

if (button.getText().toString().equals(click)){..} 

編輯:這裏是一個很好的解釋 How do I compare strings in Java?