The app is closed

0

The app is running but pressing a button closes the application. JAVA code:

package com.example.calculadora.calculadorabasica;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity {

        Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8,
                btn9, btnpun, btnres, btnsum, btnrest, btnmul, btndiv, btnret;
        EditText edtsuma, edtconca;
        double numero1, numero2, resultado;
        String operador;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btnret = (Button)findViewById(R.id.btn_buno);
            btn0 = (Button)findViewById(R.id.btn_0);
            btn1 = (Button)findViewById(R.id.btn_1);
            btn2 = (Button)findViewById(R.id.btn_2);
            btn3 = (Button)findViewById(R.id.btn_3);
            btn4 = (Button)findViewById(R.id.btn_4);
            btn5 = (Button)findViewById(R.id.btn_5);
            btn6 = (Button)findViewById(R.id.btn_6);
            btn7 = (Button)findViewById(R.id.btn_7);
            btn8 = (Button)findViewById(R.id.btn_8);
            btn9 = (Button)findViewById(R.id.btn_9);
            btnpun = (Button)findViewById(R.id.btn_punto);
            btnres = (Button)findViewById(R.id.btn_igual);
            btnsum = (Button)findViewById(R.id.btn_suma);
            btnrest = (Button)findViewById(R.id.btn_resta);
            btnmul = (Button)findViewById(R.id.btn_prod);
            btndiv = (Button)findViewById(R.id.btn_div);
            edtsuma = (EditText)findViewById(R.id.edtsuma);

            btn0.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    edtconca = (EditText)findViewById(R.id.edtsuma);
                    edtsuma.setText(edtconca.getText().toString() + "0");
                }
            });

            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    edtconca = (EditText)findViewById(R.id.edtsuma);
                    edtsuma.setText(edtconca.getText().toString() + "1");

                    btn2.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca= (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "2");
                        }
                    });

                    btn3.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "3");
                        }
                    });

                    btn4.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "4");
                        }
                    });

                    btn5.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "5");
                        }
                    });

                    btn6.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "6");
                        }
                    });

                    btn7.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtsuma.getText().toString() + "7");
                        }
                    });

                    btn8.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "8");
                        }
                    });

                    btn9.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + "9");
                        }
                    });

                    btnpun.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            edtsuma.setText(edtconca.getText().toString() + ".");
                        }
                    });

                    btnres.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            numero2 = Double.parseDouble(edtconca.getText().toString());
                            if(operador.equals("+")){
                                edtsuma.setText("");
                                resultado = numero1 + numero2;
                            }
                            if(operador.equals("-")){
                                edtsuma.setText("");
                                resultado = numero1 - numero2;
                            }
                            if(operador.equals("*")){
                                edtsuma.setText("");
                                resultado = numero1 * numero2;
                            }
                            if(operador.equals("/")){
                                edtsuma.setText("");
                                if(numero2 != 0){
                                    resultado = numero1 / numero2;
                                }else {
                                    edtsuma.setText("Infinito");
                                }
                            }
                            edtsuma.setText(String.valueOf(resultado));
                        }
                    });

                    btnsum.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            operador = "+";
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            numero1 = Double.parseDouble(edtconca.getText().toString());
                            edtsuma.setText("");
                        }
                    });
                    btnrest.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            operador = "-";
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            numero1 = Double.parseDouble(edtconca.getText().toString());
                            edtsuma.setText("");
                        }
                    });
                    btnmul.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            operador = "*";
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            numero1 = Double.parseDouble(edtconca.getText().toString());
                            edtsuma.setText("");
                        }
                    });
                    btndiv.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            operador = "/";
                            edtconca = (EditText)findViewById(R.id.edtsuma);
                            numero1 = Double.parseDouble(edtconca.getText().toString());
                            edtsuma.setText("");
                        }
                    });
                    btnret.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            numero1 = 0;
                            numero2 = 0;
                            edtsuma.setText("");
                        }
                    });
                }
            });
        }

    }

XML CODE:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.calculadora.calculadorabasica.MainActivity"
        android:orientation="vertical">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="130dp"
            android:id="@+id/edtsuma"
            android:textSize="45sp"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_ce"
                android:layout_width="192dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="DEL"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_buno"
                android:layout_width="192dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="AC"
                android:textSize="40sp" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_7"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="7"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_8"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="8"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_9"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="9"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_div"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="/"
                android:textSize="40sp" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_4"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="4"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_5"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="5"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_6"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="6"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_prod"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="*"
                android:textSize="40sp" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_1"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="1"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_2"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="2"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_3"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="3"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_resta"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="-"
                android:textSize="40sp" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn_punto"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="."
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_0"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="0"
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_igual"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="="
                android:textSize="40sp" />

            <Button
                android:id="@+id/btn_suma"
                android:layout_width="96dp"
                android:layout_height="match_parent"
                android:onClick="onClick"
                android:text="+"
                android:textSize="40sp" />
        </LinearLayout>
    </LinearLayout>
    
asked by Esteban Vera 14.06.2017 в 09:20
source

1 answer

2

Your problem is in the definition of the buttons, assigning the attribute onClick a public function of the class MainActivity . That method does not exist, and not finding it gives an error and closes the application.

What you should do is erase that attribute from the definitions so that it works since you are defining the onClick on all the buttons programmatically with the setOnClickListener methods. Here is an example:

<Button
    android:id="@+id/btn_ce"
    android:layout_width="192dp"
    android:layout_height="match_parent"
    android:text="DEL"
    android:textSize="40sp"
/>

Also, I'll give you an example of the correct use of the attribute onClick :

Implementation of setOnClickListener

Button btn = (Button) findViewById(R.id.mybutton);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        myFancyMethod(v);
    }
});

// Método definido en el atributo onClick
public void myFancyMethod(View v) {
    // Haz cualquier cosa
}

XML Implementation:

<?xml version="1.0" encoding="utf-8"?>
<!-- layout elements -->
<Button android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me!"
    android:onClick="myFancyMethod"
/>

Finally I leave you a warning:

android:onClick only works in API level 4 and following, so if you use a version < 1.6, you can not use that attribute.

I leave more information in this post:

    
answered by 14.06.2017 / 10:13
source