首页 > 解决方案 > 验证 EditText 是否为空 Android Studio

问题描述

我有点卡在这种情况下,不知道该怎么办。我需要它返回true,或者false如果用户没有将值插入EditText. 实际上应用程序崩溃并关闭。

E aí pessoal, preciso de ajuda.. Preciso verificar se o usuário deixou o EditText(number) em branco quando clicou no botão e se isso aconteceu, mostra um erro e não continua, mas dá erro e fecha o app quando essa condicional acontece。

campoBNow = findViewById(R.id.txtMenorBNow);
campoLucro = findViewById(R.id.txtLucro);

btnClicou.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        //Pega o texto do BuyNow e Lucro e coloca nas variáveis de texto.
        String pegaBNow = campoBNow.getText().toString();
        String pegaLucro = campoLucro.getText().toString();
        String item = spNivel.getSelectedItem().toString(); //Atribui o ComboBox para String...

        //Atribui o valor dos textos convertidos pra float nas variáveis float.
        double bNow = Double.parseDouble(pegaBNow);
        double lDes = Double.parseDouble(pegaLucro);

/*
        Condicional de verificação vazio...
*/

        if(TextUtils.isEmpty(pegaBNow)){
            tv5.setText("DIGITE UM VALOR DE BUY NOW"); //BuyNow vazio, mostra mensagem...
            //Toast.makeText(getApplicationContext(), "DIGITE UM VALOR DE BUY NOW", Toast.LENGTH_LONG ).show();
        } else if(TextUtils.isEmpty(pegaLucro)){
            tv5.setText("DIGITE UM VALOR DE LUCRO"); //Lucro vazio, mostra mensagem...
            //Toast.makeText(getApplicationContext(), "DIGITE UM VALOR DE LUCRO", Toast.LENGTH_LONG ).show();
        } else if(TextUtils.isEmpty(pegaBNow) && TextUtils.isEmpty(pegaLucro)){
            //Toast.makeText(getApplicationContext(), "DIGITE OS VALORES", Toast.LENGTH_LONG ).show();
        }else{
            //Atribui o valor dos textos convertidos pra float nas variáveis float.
            double res = ((bNow - (0.05*bNow)) - lDes); //Calcula o resultado...
            if(res < 0){
                tv5.setText("PROPORÇÃO LUCRO E BUY NOW INCORRETO");
                Toast.makeText(getApplicationContext(), "PROPORÇÃO INCOMPATÍVEL!", Toast.LENGTH_LONG).show();
            }else {
                //Início do IF para o nível da carta...
                if (item == "Ouro") {
                    if (res > 0 && res <= 5000) { //Começar a condicional de comparação de valor.
                        tv5.setText("O RISCO DO TRADE É BAIXO");
                    } else if (res > 5000 && res <= 15000) {
                        tv5.setText("O RISCO DO TRADE É MÉDIO");
                    } else {
                        tv5.setText("O RISCO DO TRADE É ALTO");
                    }


                } else if (item == "Prata") {
                    if (res > 0 && res <= 2000) {
                        tv5.setText("O RISCO DO TRADE É BAIXO");
                    } else if (res > 2000 && res <= 5000) {
                        tv5.setText("O RISCO DO TRADE É MÉDIO");
                    } else {
                        tv5.setText("O RISCO DO TRADE É ALTO");
                    }

                } else { //else para Bronze.
                    if (res > 0 && res <= 1000) {
                        tv5.setText("O RISCO DO TRADE É BAIXO");
                    } else if (res > 1000 && res <= 3000) {
                        tv5.setText("O RISCO DO TRADE É MÉDIO");
                    } else {
                        tv5.setText("O RISCO DO TRADE É ALTO");
                    }

                }
                //Fim do IF para o nível da carta...
            }

            //tv4.setText("COMPRE O JOGADOR POR ATÉ: " + res + " COINS");
            //tv5.setText("RISCO");
        }
    }
});

标签: javaandroidandroid-edittext

解决方案


移动线条

        double bNow = Double.parseDouble(pegaBNow);
        double lDes = Double.parseDouble(pegaLucro);

到最后的其他部分(在检查字符串空条件后工作)

你是trying to get double value before checking字符串是否为空。

如果它是空的,那么parseDouble()将抛出NumberFormatException这是应用程序崩溃的原因。


推荐阅读