2012-11-08 46 views
3

我目前正在創建一個具有不同選項的android應用程序。其中一個選擇是使用一個按鈕,默認顯示「激活」。當應用程序運行時,點擊它會將其更改爲「禁用」,然後再次點擊時「激活」。我相信,我所要做的就是.getText一個字符串變量,然後在if語句中使用此變量,但現在看來似乎沒有反應,我的任何條件......修改按鈕中的文本 - 如果語句

 final Button button = (Button) findViewById(R.id.bSensor); 


    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // Perform action on click 

      String buttonText = button.getText().toString();  
      if (buttonText == "@string/Disable") { 
       button.setText(R.string.Enable); 
      } 
      else if (buttonText == "@string/Enable"){ 
       button.setText(R.string.Disable); 
      } 

     } 
    }); 

感謝您的幫助

Phyzikk

+0

我們甚至在這裏談論什麼語言?請將該語言添加爲標籤。 – Rengers

+0

看起來他在做Java和Android –

+0

對不起,我是新來的論壇,它是Android與eclipse SDK。 – Phyziik

回答

2

在Java中比較字符串時,則不應使用==操作符。 Source

您應該使用字符串的.equals()方法,或者您可以保留全局布爾狀態標誌以確定設置了哪個值。這樣,每次需要確定它是否處於活動狀態或禁用狀態時,都不需要進行字符串比較。

+0

確保在使用'.equals'時,您在文字字符串上調用它。即「啓用」.equals(buttonText)'而不是'buttonText.equals(「啓用」)'。它將防止NullPointerExceptions。 – toadzky

+0

我不知道我怎麼可以做一個布爾狀態標誌:S和toadzky,我想如何做到這一點「啓用」.equals(buttonText)線,啓用是一個字符串資源 – Phyziik

+0

請注意引號。 「Enable」是一個字符串文字,R.string.Enable是您的資源。 – JoshBramlett

1

使用.equals來比較字符串。您不需要前綴@String/,因爲這不是按鈕顯示的部分。

final Button button = (Button) findViewById(R.id.bSensor); 

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // Perform action on click 

     String buttonText = button.getText().toString(); 

     if (buttonText.equals(getResources().getText(R.string.Disable)) { 
      button.setText(R.string.Enable); 
     } 
     else if (buttonText.equals(getResources().getText(R.string.Enable)){ 
      button.setText(R.string.Disable); 
     } 

    } 
}); 
+0

我試過這種方式,我不會從按鈕得到任何反應。 – Phyziik

+0

@Phyziik你調試瞭解buttonText是什麼?如果有空白,可以添加'.trim'。 – Doomsknight

+0

不幸的是,我沒有機會去理解調試模式,去看看視頻和教程,看起來還很難理解。我在其他程序中使用過這類工具,但無法理解這些變量是如何工作的。感謝壽! – Phyziik