简体   繁体   中英

Getting error: Caused by: java.lang.NumberFormatException: For input string: “”

I have two EditText from which I am getting Integer values of 'quantity' and 'rate' and then I am setting this Integer value to TextView names 'Amount'.

    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();
            }
        });

   
     

I am using TextWatcher on rate whenever the user enter the rate the value will be set to the TextView Amount. But I am getting NumberFormatException for input string: "".

You are not checking the String if it is empty or not before using it. Since you are beginner I will try to keep it simple for you. Just keep in mind that you need to check for not empty String then you can use it for other purpose.

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());

The getRate and getQty variables above will be null since edit text will be empty as this code is executed right before the user enters the value.

Solution:

  • From the function, afterTextChanged(Editable s) get the values dynamically from the user through edit text using the code below.
   s.getText().toString()
  • Add isempty() function to check if the edit text is empty to avoid the null exception.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM