我對Android非常陌生,這是我決定開展工作的第一個項目。儘管我已經在MainActivity.java文件中聲明瞭按鈕(addButton,subtractButton等),並且已將它們分配給XML文件中各自的按鈕,但我仍然在運行我的應用程序時收到錯誤。我相信這是因爲在OnClick方法中,XML文件中視圖元素的ID被識別。例如,我的'+'按鈕的ID是XML中的add_button,但是當我嘗試寫入 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"/>
感謝提前任何幫助!
您必須使用正確的ID,例如 case R.id.add_button –