文本观察器中的多个编辑文本

multiple edittext in textwatcher

在 textwatcher 的多个 edittext 中,如果添加一些值,它会很好地工作。现在,如果我从其中一个删除某些内容,它就会崩溃。

在 TextWatcher 的 Multiple EditText 中,当有一些附加值时它工作得很好。

如果我不删除其中任何一个,那么它工作正常。

请解释我哪里出错了。

private final TextWatcher rateValue = new TextWatcher() {

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    public void afterTextChanged(Editable s) {
        String rate = item_sale_rate.getText().toString();
        Double sellRateInNo = Double.valueOf(rate); // String to Integer
        s_mrp_value.setText(item_sale_rate.getText());
        s_rate_value.setText(item_sale_rate.getText());
    }
};

private final TextWatcher discountValue = new TextWatcher() {
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    public void afterTextChanged(Editable s) {

        String rate = item_sale_rate.getText().toString();
        String discount = item_sale_discount.getText().toString();

        int sellRateInNo = Integer.valueOf(rate); // String to Integer
        int sellDisInNo = Integer.valueOf(discount); // String to Integer

        s_rate_value.setText(item_sale_rate.getText().toString()); // at is String
        s_discount_value.setText(item_sale_discount.getText().toString()); // at is String

        int taxableInNo = sellRateInNo - sellDisInNo; // calculation
        s_taxable_value.setText(String.valueOf(taxableInNo)); // Integer to String
    }
};

private final TextWatcher taxValue = new TextWatcher() {
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    public void afterTextChanged(Editable s) {

        String rate = item_sale_rate.getText().toString();
        String discount = item_sale_discount.getText().toString();
        String tax = item_sale_tax.getText().toString();

        int sellRateInNo = Integer.valueOf(rate); // String to Integer
        int sellDisInNo = Integer.valueOf(discount); // String to Integer
        int sellTaxInNo = Integer.valueOf(tax); // String to Integer

        s_rate_value.setText(item_sale_rate.getText().toString()); // at is String
        s_discount_value.setText(item_sale_discount.getText().toString()); // at is String

        int taxableInNo = sellRateInNo - sellDisInNo; // calculation
        s_taxable_value.setText(String.valueOf(taxableInNo)); // Integer to String

        s_total_value.setText(String.valueOf(priceInNo));
    }
};

由于您还没有发布任何日志,我猜测您可能需要在尝试将每个字符串转换为 Double 或 Int 之前检查每个字符串是否为 null 或 empty(基本上您的字符串是“”):

if(str != null && !str.isEmpty()) { 
    /* code */ 
}

例子

Double sellRateInNo = 0;
String rate = item_sale_rate.getText().toString();
If (rate != null && !rate.isEmpty()) {
     sellRateInNo = Double.valueOf(rate);
}