繁体   English   中英

IF语句不适用于TextWatcher

[英]IF statement doesn't work with TextWatcher

我的代码看起来很简单,我不知道出了什么问题。 如果我编写如下代码:

tvResult.setText(sum+ "RUB");

它显示正确的数字。 但是,如果我尝试添加这样的IF语句:

if(sum>=114000) {
                    tvResult.setText(sum + " RUB");
                }

总和等于1000000,则显示奇怪的数字:1111111.0。 需要您的建议=)预先感谢

这是XML代码:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:id="@+id/tvCash"
        android:layout_below="@id/tvCalculate"
        android:hint="@string/cash_money"
        android:background="@drawable/zakat_red"
        android:layout_marginTop="20dp"/>

    <EditText
        android:layout_width="130dp"
        android:layout_height="40dp"
        android:id="@+id/etCash"
       android:inputType="numberDecimal"
        android:layout_above="@+id/tvBank"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:hint="@string/hint_zakat"
        android:gravity="end"
        android:imeOptions="actionDone"/>

和Java代码:

TextWatcher twCash=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) {
                tvCash.setBackgroundResource(R.drawable.zakat_green);
                sum+=Float.valueOf(etCash.getText().toString());
                if(sum>=114000) {
                    tvResult.setText(sum + " RUB");
                }
            }
        };

“ .0”最有可能出现,因为sum变量是浮点数或其他内容。 您应该将int用作变量sum,或者在显示时将其强制转换为int。 这应该工作。

if (sum >= 114000) {
    tvResult.setText((int)sum + " RUB");
}

如果您需要将其作为一个总和,并且如果它们不为零,则仅在小数点后显示值,则需要编写一种方法来解析该值以返回所需的值。

您的逻辑有问题。 使用TextWatcher ,即使您键入',也要计算在editText输入的所有数字的总和。 在任何数字之后, afterTextChanged()将被调用,然后将其添加到汇总的总和中。因此,假设您连续输入以下字符:2,3,。 ,4,7然后,您将得到和= 94.87并且我想这不是计算输入数字之和的正确方法。 您必须更正逻辑以获得所需的输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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