Error: in Builder cannot be Applied

Asked

Viewed 119 times

4

I’m developing a simple calculator. I am checking if one of the fields is null open a Alertdialog, however I am with the error in Builder cannot be Applied, no this do Alertdialog.Builder. Can someone help me solve ?

//Declarações de Variáveis
EditText valor1, valor2, resultado;
Button soma, sub, mult, divi;
double v1, v2, result;

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

    //Obtem os objetos do actitity_layout_xml.xml
    valor1 = (EditText) findViewById(R.id.calculo_valor1);
    valor2 = (EditText) findViewById(R.id.calculo_valor2);
    resultado = (EditText) findViewById(R.id.calculo_resultado);

    //Atribuindo os botões em variáveis que foram declaradas globais
    soma = (Button) findViewById(R.id.calculo_soma);
    sub = (Button) findViewById(R.id.calculo_subtracao);
    mult = (Button) findViewById(R.id.calculo_multiplicacao);
    divi = (Button) findViewById(R.id.calculo_divisao);

    //Ação dos botões
    soma.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            if (valor1.getText().toString().isEmpty() || valor2.getText().toString().isEmpty()) {

                //Alertas/Notificações
                AlertDialog.Builder dlg = new AlertDialog.Builder(this);
                dlg.setMessage("Há campos em branco");
                dlg.setNeutralButton("OK",null);
                dlg.show();

            }else {

                //Convertendo a variável valor1 e valor2 em string, depois em Double e armazenando em variáveis
                v1 = Double.parseDouble(valor1.getText().toString());
                v2 = Double.parseDouble(valor2.getText().toString());

                result = v1 + v2;

                //Convertendo a variável result em string e atribuindo ela em um EditText
                resultado.setText(String.valueOf(result));
            }
        }});


        sub.setOnClickListener(new View.OnClickListener()

        {

            public void onClick (View v){

            //Convertendo a variável valor1 e valor2 em string, depois em Double e armazenando em variáveis
            v1 = Double.parseDouble(valor1.getText().toString());
            v2 = Double.parseDouble(valor2.getText().toString());
            result = v1 - v2;

            //Convertendo a variável result em string e atribuindo ela em um EditText
            resultado.setText(String.valueOf(result));
        }
        }

        );

        mult.setOnClickListener(new View.OnClickListener()

        {

            public void onClick (View v){

            //Convertendo a variável valor1 e valor2 em string, depois em Double e armazenando em variáveis
            v1 = Double.parseDouble(valor1.getText().toString());
            v2 = Double.parseDouble(valor2.getText().toString());
            result = v1 * v2;

            //Convertendo a variável result em string e atribuindo ela em um EditText
            resultado.setText(String.valueOf(result));
        }
        }

        );

        divi.setOnClickListener(new View.OnClickListener()

        {

            public void onClick (View v){

            //Convertendo a variável valor1 e valor2 em string, depois em Double e armazenando em variáveis
            v1 = Double.parseDouble(valor1.getText().toString());
            v2 = Double.parseDouble(valor2.getText().toString());
            result = v1 / v2;

            //Convertendo a variável result em string e atribuindo ela em um EditText
            resultado.setText(String.valueOf(result));
        }
        }

        );
    }
}
  • Try to put NomeDaClasse.this!

  • 1

    Igor Valeu, it worked out here

  • Going make official the answer so that other people can also remedy their doubts!

1 answer

3

Just change the following line:

AlertDialog.Builder dlg = new AlertDialog.Builder(this);

for:

AlertDialog.Builder dlg = new AlertDialog.Builder(NomeDaClasse.this);

for only this is not mentioning for the context.

  • 1

    Or this.getcontext(); Or getApplicationContext();

Browser other questions tagged

You are not signed in. Login or sign up in order to post.