2014-11-06 2 views
0

Я пытаюсь создать калькулятор на Eclipse в качестве приложения для Android. У меня проблемы с прослушивателем для нескольких кнопок. Я знаю, что многие решения доступны в Интернете для этого проекта, но я учусь, поэтому я действительно хотел бы понять, где моя ошибка.Один прослушиватель - Несколько кнопок

Вот мой XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.rayana.calculator.MainActivity" > 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/button1" 
     android:layout_marginTop="39dp" 
     android:text="Result =" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button1" 
     android:layout_alignLeft="@+id/button1" 
     android:layout_marginBottom="31dp" 
     android:text="B =" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/editText1" 
     android:layout_alignLeft="@+id/textView2" 
     android:text="A =" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/editText2" 
     android:layout_alignLeft="@+id/editText2" 
     android:layout_marginBottom="45dp" 
     android:ems="10" 
     android:inputType="numberDecimal" /> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView2" 
     android:layout_alignBottom="@+id/textView2" 
     android:layout_alignLeft="@+id/button2" 
     android:ems="10" 
     android:inputType="numberDecimal" /> 

    <Button 
     android:id="@+id/button2" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView3" 
     android:layout_toRightOf="@+id/textView3" 
     android:text="-" /> 

    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView3" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="16dp" 
     android:text="+" /> 

    <Button 
     android:id="@+id/button3" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView2" 
     android:layout_marginLeft="16dp" 
     android:layout_toRightOf="@+id/button2" 
     android:text="x" /> 

    <Button 
     android:id="@+id/button4" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView2" 
     android:layout_marginLeft="16dp" 
     android:layout_toRightOf="@+id/button3" 
     android:text="÷" /> 

    <EditText 
     android:id="@+id/editText3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/textView3" 
     android:ems="10" 
     android:inputType="numberDecimal" /> 

</RelativeLayout> 

А вот мой Main.java:

import android.support.v7.app.ActionBarActivity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.os.Bundle; 

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button plus = (Button)findViewById(R.id.button1); 
     Button minus = (Button)findViewById(R.id.button2); 
     Button multiply = (Button)findViewById(R.id.button3); 
     Button devise = (Button)findViewById(R.id.button4); 

     final EditText editText1 = (EditText)findViewById(R.id.editText1); 
     final double A = Double.valueOf(editText1.getText().toString()); 
     final EditText editText2 = (EditText)findViewById(R.id.editText2); 
     final double B = Double.valueOf(editText2.getText().toString()); 
     final EditText editText3 = (EditText)findViewById(R.id.editText3); 


     plus.setOnClickListener(Operation1); 
     minus.setOnClickListener(Operation1); 
     multiply.setOnClickListener(Operation1); 
     devise.setOnClickListener(Operation1); 


     OnClickListener Operation1 = new OnClickListener() { 

     public void onClick(View v) { 

       switch(v.getId()){ 

       case R.id.button1: 

        double result = A+B; 
        editText3.setText(String.valueOf(result)); 
        break; 
       case R.id.button2: 
        double result2 = A-B; 
        editText3.setText(String.valueOf(result2)); 
        break; 
       case R.id.button3: 
        double result3 = A*B; 
        editText3.setText(String.valueOf(result3)); 
        break; 
       case R.id.button4: 
        double result4 = A/B; 
        editText3.setText(String.valueOf(result4)); 
        break; 
       } 
      } 
    }; 
    } 
+0

Какие у вас проблемы? –

+0

«У меня возникают проблемы», что это, вы получили какую-либо ошибку? –

+0

просьба указать проблему. – Kirtan

ответ

1

Написать свой код удара за пределами вашего метода onCreate().

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    Button plus = (Button)findViewById(R.id.button1); 
    Button minus = (Button)findViewById(R.id.button2); 
    Button multiply = (Button)findViewById(R.id.button3); 
    Button devise = (Button)findViewById(R.id.button4); 

    final EditText editText1 = (EditText)findViewById(R.id.editText1); 
    final double A = Double.valueOf(editText1.getText().toString()); 
    final EditText editText2 = (EditText)findViewById(R.id.editText2); 
    final double B = Double.valueOf(editText2.getText().toString()); 
    final EditText editText3 = (EditText)findViewById(R.id.editText3); 


    plus.setOnClickListener(Operation1); 
    minus.setOnClickListener(Operation1); 
    multiply.setOnClickListener(Operation1); 
    devise.setOnClickListener(Operation1); 

} 
     ///Your click listener method: 
OnClickListener Operation1 = new OnClickListener() { 

     public void onClick(View v) { 

       switch(v.getId()){ 

       case R.id.button1: 

        double result = A+B; 
        editText3.setText(String.valueOf(result)); 
        break; 
       case R.id.button2: 
        double result2 = A-B; 
        editText3.setText(String.valueOf(result2)); 
        break; 
       case R.id.button3: 
        double result3 = A*B; 
        editText3.setText(String.valueOf(result3)); 
        break; 
       case R.id.button4: 
        double result4 = A/B; 
        editText3.setText(String.valueOf(result4)); 
        break; 
       } 

      } 
    }; 
} 
+0

Я пробовал это на самом деле, но потом editText3, A и B больше не распознаются. Это сообщение: «editText3 не может быть разрешено», и то же самое для A и B. – user3855955

+0

Пожалуйста, разместите полную ошибку logcat. @ user3855955 – GrIsHu

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