0

我已经使用 Android 创建了一个简单的应用程序,但是当我单击任何 View 时,该应用程序崩溃。您能否帮助了解 MainActivity.java 的以下代码:

public class CalculatorMainActivity extends Activity implements OnClickListener{
int a3 =0, a1=0,a2 =0;
 Button b1,b2;
  EditText t1,t2;
 TextView v1;
 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calculator_main);

     b1=(Button) findViewById(R.id.mul);
     b2=(Button) findViewById(R.id.sum);
     t1 = (EditText) findViewById(R.id.editText1);
     t2 = (EditText) findViewById(R.id.editText2);
     v1 = (TextView) findViewById(R.id.text1);

     b1.setOnClickListener(this);
     b2.setOnClickListener(this);
     t1.setOnClickListener(this);
     t2.setOnClickListener(this);
     v1.setOnClickListener(this);  

}

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_calculator_main, menu);
    return true;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    String s1 = t1.getText().toString();

    a1 = Integer.parseInt(s1);

    String s2 = t2.getText().toString();
    a2 = Integer.parseInt(s2);

    if (v == b1)
    a3 = a1 + a2;
    v1.setText(a3.toString());  
    if (v == b2)
    a3 = a1 * a2; 
    v1.setText(a3.toString());

}
 }

如果您可以对此错误提供一些解决方案,那将非常有帮助。

4

3 回答 3

1

这里有几个问题。

1) nitpick 可能,但处理按钮单击的一种更简洁的方法是在 XML 中定义视图的 andriod:onClick 属性,并将其设置为等于带有签名 public void myClickHandler(View v) 的方法名称。在该方法中,您可以根据视图选择操作,但您不能在视图上使用 == 来执行此操作。相反,您需要像这样比较视图 ID

if(v.getId() == v1.getId())

2)正如 njzk2 指出的那样,在 if 块上使用(或不使用){} 时要小心。现在,您仅在 if 语句之后有条件地执行该行。这可能不是你想要的。

3)请验证输入,这段代码现在非常脆弱(你试图在没有任何检查或错误处理的情况下将字符串解析为 int。这肯定会很快中断。

4)您不想在 Integer 对象上调用 toString() ,更不用说 int 原语了。正如我在评论中提到的,这甚至不应该编译,因为它没有意义——你不能在原语上调用任何实例方法。而是做 v1.setText(new String(a3)) 或 v1.setText(a3 + "")

于 2012-10-05T16:11:01.987 回答
0

它在这里崩溃:

v1.setText(a3.toString());

因为您的 if 操作周围没有 {},并且未定义 a3。

于 2012-10-05T15:58:19.443 回答
0

我还建议阅读有关将数字转换为字符串的内容。 http://docs.oracle.com/javase/tutorial/java/data/converting.html

于 2012-10-05T16:43:19.017 回答