[英]How to fix Asynctask error caused by Caused by: java.lang.NumberFormatException: For input string: "pets"
[英]Getting error: Caused by: java.lang.NumberFormatException: For input string: “”
我有两个EditText
,从中我得到Integer
的“数量”和“速率”值,然后我将此Integer
值设置为TextView
名称“数量”。
private MilkViewModel milkViewModel;
private DatePickerDialog datePickerDialog;
private Button dateButton,submit;
private EditText dateText;
private MaterialDatePicker materialDatePicker;
private Spinner shift_spinner;
private ImageView imageView;
public RadioGroup rg;
private EditText fat;
private EditText snf;
public EditText rate;
public EditText qty;
private TextView amount;
private RadioButton rb;
private String getDate,getShift,getType;
private int getSnf=0;
private int getRate;
private int getQty;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dateText=findViewById(R.id.date_picker_et);
shift_spinner = (Spinner) findViewById(R.id.shift_spinner);
rg=(RadioGroup)findViewById(R.id.radioGroup);
snf=(EditText)findViewById(R.id.snf);
rate=(EditText)findViewById(R.id.rate);
fat=(EditText)findViewById(R.id.fat);
amount= (TextView) findViewById(R.id.amount);
final TextView amount = findViewById(R.id.amount);
qty=(EditText)findViewById(R.id.qty);
submit=(Button)findViewById(R.id.submit);
// int getAmount = Integer.parseInt(amount.getText().toString());
int getRate=Integer.parseInt(rate.getText().toString());
int getQty=Integer.parseInt(qty.getText().toString());
rate.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
amount.setText(Integer.toString(getRate*getQty));
Toast.makeText(MainActivity.this, ""+amount, Toast.LENGTH_SHORT).show();
}
});
每当用户输入速率时,我都会在速率上使用TextWatcher
,该值将设置为TextView
数量。 但是我得到了输入字符串的NumberFormatException
:“”。
在使用它之前,您没有检查String
是否为空。 由于你是初学者,我会尽量为你保持简单。 请记住,您需要检查非空String
,然后您可以将其用于其他目的。
rate.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String tempRate = rate.getText().toString();
String tempQty = qty.getText().toString();
if (tempRate != null && !tempRate.isEmpty() && !tempRate.equals("null") && tempQty != null && !tempQty.isEmpty() && !tempQty.equals("null")) {
int getRate=Integer.parseInt(rate.getText().toString());
int getQty=Integer.parseInt(qty.getText().toString());
}
amount.setText(Integer.toString(getRate*getQty));
Toast.makeText(MainActivity.this, ""+amount, Toast.LENGTH_SHORT).show();
}
});
int getRate=Integer.parseInt(rate.getText().toString());
int getQty=Integer.parseInt(rate.getText().toString());
上面的getRate和getQty变量将为 null,因为编辑文本将为空,因为此代码在用户输入值之前执行。
解决方案:
s.getText().toString()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.