2013-08-21 41 views
-2

我有一個簡單的if語句的問題,我不太清楚爲什麼。我有一個edittext框和一個按鈕,當用戶在edittext中輸入一個值然後按下按鈕時,無論輸入到框中的什麼都被轉換爲字符串並存儲在一個變量中,這個變量就會顯示在一個吐司。現在,它的工作原理非常好,但是我希望它只在某個值被輸入到編輯框中時纔會顯示,但是當我放入一個if語句來驗證它時,它似乎完全忽略了if語句並且什麼都不做。它不會導致任何錯誤,但即使輸入了正確的字符串,也會停止顯示任何吐司。我確信這是簡單的,但我似乎無法解決。如果有人能夠弄清楚爲什麼這樣做,那將是非常好的。下面
代碼:

工作代碼時if語句被註釋掉:
簡單如果語句停止工作代碼

  saveBtn1.setOnClickListener(new View.OnClickListener() { 
      @Override 
     public void onClick(View view) { 
      Global.controlNum = inputTxt1.getText().toString(); 
     // if((Global.controlNum == "1")||(Global.controlNum == "2")){ 
       Toast toast= Toast.makeText(SettingsScreen.this,"hello " + Global.controlNum, Toast.LENGTH_SHORT); 
       toast.setGravity(Gravity.CENTER, 0, -100); 
        toast.show(); 
     // } 

     } 
    }); 


如果if語句中,然後把它不會做任何事情:

 saveBtn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
      public void onClick(View view) { 
       Global.controlNum = inputTxt1.getText().toString(); 
      if((Global.controlNum == "1")||(Global.controlNum == "2")){ 
       Toast toast= Toast.makeText(SettingsScreen.this,"hello " +  Global.controlNum,  Toast.LENGTH_SHORT); 
        toast.setGravity(Gravity.CENTER, 0, -100); 
        toast.show(); 
      } 

     } 
    }); 
+0

_controlNum_是一個字符串,應該總是使用equals()或equalsIgnoreCase()方法進行比較。 –

+1

嘗試'Global.controlNum.equals(「1」)'而不是 – rocketboy

+0

使用.equals()或.equalIgonreCase()當你比較兩個字符串。 – 2013-08-21 08:50:19

回答

0

你應該改變它:

if((Global.controlNum == "1")||(Global.controlNum == "2")) 

if((Global.controlNum.equals("1"))||(Global.controlNum.equals("2"))) 
+0

@AndroidLearner我真的懷疑這一點。除非創建它的'toString'方法可以返回null,這似乎不太可能,那就沒關係。 – resueman

3

閱讀約How do I compare strings in Java?


所以,簡單地改變

if((Global.controlNum == "1")||(Global.controlNum == "2")) 

隨着

if(("1".equals(Global.controlNum))||("2".equals(Global.controlNum))) 
0

您應該使用equlas()比較String

Global.controlNum.equlas("1") 
0

嘗試更換

if((Global.controlNum == "1")||(Global.controlNum == "2")) 

if((Global.controlNum.equalsIgnoreCase("1"))||(Global.controlNum.equalsIgnoreCase("2"))) 
0

使用Global.controlNum.equals("1")

如果你想用Java(Android版)比較字符串經常使用的方法equals(String)equalsIgnoreCase(String)