2015-09-08 49 views
-2

我對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"/> 

感謝提前任何幫助!

回答

0

我認爲這個問題是你做了一個開關的情況下

仔細查看錯誤的ID,在XML中添加按鈕的ID是「ADD_BUTTON」裏,你正在使用它的情況是

case R.id.addButton: 

所以這不是正確和實際的添加按鈕的ID。請進一步檢查兩次,你沒有搞砸了ID。

+0

您必須使用正確的ID,例如 case R.id.add_button –

0

中的onClick你需要add_button你在XML定義提供id,而不是你在MainActivity定義按鈕變量是Addbutton 這沒有任何問題,這是怎樣的onClick Android版。

0

檢查您在開關櫃中使用錯誤ID的onclick方法。 使用R.id.add_button而不是R.id.addButton