0

我的应用程序中有 4 个编辑文本字段,它们分别接受一个 long 值和 3 个 double 值。我已经将它们与 onFocusChangedListener() 一起使用。我的问题是,每当某个编辑文本获得焦点时,在用户输入值之前,默认值(如果是双精度则为 0.0)会显示在编辑字段中。我希望在用户输入他的值之前它们是空白的。我尝试过使用 editText.setText("") 和 editText.setHint("")。但是这些在活动开始时起作用,但是一旦编辑字段获得焦点,就会显示默认值。请帮我解决故障。谢谢你。

这是代码

public void onFocusChange(View EditTextFocus , boolean hasFocus)
    {
        // TODO Auto-generated method stub

        try
        {
            km= Long.parseLong(ETKm.getText().toString());
            fuelQty= Double.parseDouble(ETFuelQty.getText().toString());
            fuelPrice= Double.parseDouble(ETFuelPrice.getText().toString());
            totalCost= Double.parseDouble(ETTotalCost.getText().toString());

        }
        catch(NumberFormatException ne)
        {
            ne.printStackTrace();
        }

        if(ETTotalCost.hasFocus())
            {

                if((fuelQty!=0)&&(fuelPrice!=0))
                totalCost=fuelQty*fuelPrice;
                ETTotalCost.setText(new DecimalFormat("##.##").format(totalCost));
            }   

        else if(ETFuelQty.hasFocus())
            {
                ETFuelQty.setText("");
                if((fuelPrice!=0)&&(totalCost!=0))
                    fuelQty= (int) (totalCost/fuelPrice);
                    ETFuelQty.setText(String.valueOf(fuelQty));
            }   

        else if(ETFuelPrice.hasFocus())
            {
                ETFuelPrice.setText("");
                if((fuelQty!=0)&&(totalCost!=0))
                    fuelPrice=totalCost/fuelQty;
                    ETFuelPrice.setText(String.valueOf(fuelPrice));
            }   

        }
4

2 回答 2

1

尝试设置setHint()一些东西。

提示是一个占位符,直到该人输入一些输入,因此您可以输入“燃料价格”之类的内容。

于 2013-08-08T09:08:15.803 回答
0

我解决了我的问题。它也可能对其他搜索此内容的人有用。

我的问题是我在变量成为焦点之前对其进行了初始化和解析。这让我得到了初始值,即。焦点时编辑字段中的 null (0) 值。在编辑字段获得焦点后,我初始化并解析了我的变量

因此,我将代码更改为:

*case R.id.ETTotalCost:
                                if(ETTotalCost.hasFocus())
                                {
                                    if(ETFuelQty.length()>0 && ETFuelPrice.length()>0)
                                    {
                                        fuelQty=Double.parseDouble(ETFuelQty.getText().toString());
                                        fuelPrice= Double.parseDouble(ETFuelPrice.getText().toString());
                                        if((fuelQty!=0)&&(fuelPrice!=0))
                                        totalCost=fuelQty*fuelPrice;
                                        ETTotalCost.setText(new DecimalFormat("##.##").format(totalCost));
                                    }
                                }*  
于 2013-08-18T13:50:27.837 回答