2011-02-25 107 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