2011-02-25 93 views
0
 @Override 
     public void onClick(View view) { 
      AtimesB = nrB * nrA; 
      try { 
       AtimesB = Integer.parseInt(editA.getText().toString()); 
      }catch(NumberFormatException e){ 
       textInC.setText("Error!"); 
       usableInt = false; 
       } 
      if(AtimesB == Integer.parseInt(editA.getText().toString())){ 
       editA.setText(""); 
       textC.setTextColor(Color.parseColor("#87d9ff")); 
       textC.append("CORECCT: " + nrB + " x " + nrA + " = " + AtimesB + "\n"); 
       textInC.setText(""); 
       nrA = rand.nextInt(50)+1; 
       nrB = rand.nextInt(50)+1; 
       textA.setText(String.valueOf(nrA)); 
       textB.setText(String.valueOf(nrB)); 
      }else if(usableInt = false){ 
          textInC.setTextColor(Color.RED); 
          textInC.setText("Error"); 

      }else{ 
       textInC.setText("INCORECCT"); 
      } 
     } 

任何想法如何解決這個問題?當我點擊帶有空EditText的按鈕時,應用程序崩潰。空EditText Android崩潰

謝謝。

+0

修復「什麼」?它是否是崩潰?你能發送日誌嗎?順便說一句,你有一個賦值而不是比較,'有趣的= false'缺少一個'='。 – EboMike 2011-02-25 23:18:45

回答

0

您的整數解析既效率低下,也損壞。你兩次做同樣的事情。每當你兩次寫完全相同的代碼,你應該問自己,如果你做錯了。

試試這個:

try { 
    if(AtimesB == Integer.parseInt(editA.getText().toString())) { 
     editA.setText(""); 
     textC.setTextColor(Color.parseColor("#87d9ff")); 
     textC.append("CORECCT: " + nrB + " x " + nrA + " = " + AtimesB + "\n"); 
     [...] 
    } 
} catch(NumberFormatException e){ 
    textInC.setText("Error!"); 
    usableInt = false; 
} 

此外,像我在評論中提到,你錯過了在比較(if(usableInt = false)一=

+0

感謝這個例子,它像一個新烤鬆餅一樣工作。 – Muazam 2011-02-25 23:48:37

+0

太棒了,現在你讓我餓了:P祝你好運! – EboMike 2011-02-25 23:57:32

1

對於EditText的文本值,您有一個try/catch包圍了對parseInt的直接調用,但稍後再做一次。這可能是你拋出異常的地方。

+0

感謝您的理解,真的很感激它。在另一個論壇Somone告訴我這樣做:/。很高興爲它修復。 – Muazam 2011-02-25 23:39:57