Я совершенно новый для Android, и это первый проект, над которым я решил работать. Хотя я объявил свои кнопки (addButton, subtractButton и т. Д.) В файле MainActivity.java и назначил их соответствующим кнопкам в XML-файле, я все равно получаю сообщение об ошибке при запуске моего приложения. Я считаю, что это связано с тем, что в методе OnClick распознаются идентификаторы элементов представления в XML-файле. Например, идентификатор моей кнопки «+» - это add_button в XML, но когда я пытаюсь написать case R.id.addButton
, я получаю сообщение об ошибке (но case R.id.add_button
не возвращает ошибку).Переключатель кнопки не распознается в OnClick Listener
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"/>
Спасибо за любую помощь заранее!
вы должны использовать правильный идентификатор, такой как case R.id.add_button –