java - 验证 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");
}
}
});
解决方案
移动线条
double bNow = Double.parseDouble(pegaBNow);
double lDes = Double.parseDouble(pegaLucro);
到最后的其他部分(在检查字符串空条件后工作)
你是trying to get double value before checking
字符串是否为空。
如果它是空的,那么parseDouble()
将抛出NumberFormatException
这是应用程序崩溃的原因。
推荐阅读
- c# - 读取 ActionFilter 中的响应,然后读取 DelegatingHandlers
- android - SQLiteConstraintException:NOT NULL 约束失败,即使在声明了默认值之后
- javascript - 当使用客户端函数填充 DOM 时,如何等待所有图像从 puppeteer 中的 page.evaluate 函数加载
- android - 应用程序进入后台时如何处理
- python - 将代码从matlab转换为python,出现问题
- java - 在 spring applicationContext.xml 中访问系统属性时出错
- mysql - MARIADB:根据另一个表中的数据插入和更新表
- laravel - Laravel - 移动的项目现在无法登录
- spring-boot - 多部分文件上传 - 不允许某些文件类型或仅允许上传 PDF
- oracle - 能够使用 TNS 别名连接到数据库,但不能使用服务名称