2015-09-08 3 views
-2

Я совершенно новый для 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"/> 

Спасибо за любую помощь заранее!

ответ

0

Я думаю, что проблема неправильно Идентификаторы вы получаете в случае переключения

приглядеться, в вашем XML идентификатор кнопки добавления является «add_button», где, как в случае, который вы используете для этого является

case R.id.addButton: 

так что это неправильный и фактический идентификатор кнопки добавления. Пожалуйста, проверьте еще раз, что вы не перепутались с идентификаторами.

+0

вы должны использовать правильный идентификатор, такой как case R.id.add_button –

0

в OnClick необходимо предоставить идентификаторы add_button вы определяете в XML не ту кнопку переменная, которую определяют в MainActivity который Addbutton это не какой-либо вопрос, это как андроид работает OnClick.

0

Проверьте свой метод onclick, который вы использовали неверный идентификатор в корпусе коммутатора. R.id.add_button вместо R.id.addButton

Смежные вопросы