我对Android很新,这是我决定开展的第一个项目。虽然我已经在MainActivity.java文件中声明了我的按钮(addButton,subtractButton等),并将它们分配给XML文件中的各自按钮,但我在运行应用程序时仍然收到错误。我相信这是因为,在OnClick方法中,正在识别XML文件中视图元素的ID。例如,我的“+”按钮的ID是XML中的add_button,但是当我尝试编写时
case R.id.addButton
,我收到错误(但case R.id.add_button
没有返回错误。)
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener {
Button addButton;
Button subtractButton;
Button multiplyButton;
Button divideButton;
TextView editText;
EditText number1;
EditText number2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addButton=(Button)findViewById(R.id.add_button);
multiplyButton=(Button)findViewById(R.id.multiply_button);
subtractButton=(Button)findViewById(R.id.subtract_button);
divideButton=(Button)findViewById(R.id.divide_button);
editText=(TextView)findViewById(R.id.dispNum);
number1=(EditText)findViewById(R.id.num1);
number2=(EditText)findViewById(R.id.num2);
addButton.setOnClickListener(this);
multiplyButton.setOnClickListener(this);
subtractButton.setOnClickListener(this);
divideButton.setOnClickListener(this);
}
public void onClick(View v){
int num1=0,num2=0,result=0;
num1=Integer.parseInt(number1.getText().toString());
num2=Integer.parseInt(number2.getText().toString());
switch(v.getId()){
case R.id.addButton:
result=num1+num2;
break;
case R.id.subtract_button:
result=num1-num2;
break;
case R.id.multiply_button:
result=num1*num2;
break;
case R.id.divide_button:
result=num1/num2;
break;
default:
break;
}
editText.setText(result);
}
}
这是XML文件
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/num1"
android:gravity="center"
android:id="@+id/num1"/>
<EditText
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/num2"
android:gravity="center"
android:id="@+id/num2"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"
android:id="@+id/add_button"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"
android:id="@+id/subtract_button"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"
android:id="@+id/multiply_button"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"
android:id="@+id/divide_button"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="30dp"
android:gravity="center"
android:textSize="24dp"
android:id="@+id/dispNum"/>
提前感谢您的帮助!
答案 0 :(得分:0)
你需要提供你在xml中定义的id add_button
而不是你在MainActivity中定义的按钮变量Addbutton
这不是任何问题,这就是android onClick的工作方式。
答案 1 :(得分:0)
我认为问题是错误的,你正在进入一个转换案例
仔细观察,在你的xml中,添加按钮的id是&#34; add_button&#34;你正在使用的情况是
case R.id.addButton:
所以这不是添加按钮的正确和实际ID。请再检查一下你没有弄乱ids。
答案 2 :(得分:0)
检查你的onclick方法,你在开关盒中使用了错误的id。
使用R.id.add_button
代替R.id.addButton