简单的Android SUM&乘法应用程序在AVD上崩溃

时间:2012-10-05 15:53:19

标签: java android android-layout

我使用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());

}
 }

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

3 个答案:

答案 0 :(得分: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 +“”)

答案 1 :(得分:0)

它在这里崩溃了:

v1.setText(a3.toString());

因为你的if动作周围没有{},并且没有定义a3。

答案 2 :(得分:0)

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