在焦点上将初始Edittext值设置为空白

时间:2013-08-08 09:03:04

标签: android

我的应用程序中有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));
            }   

        }

2 个答案:

答案 0 :(得分:1)

尝试将setHint()设置为某些内容。

提示是占位符,直到此人输入一些输入,因此您可以输入“Fuel price”之类的内容。

答案 1 :(得分: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));
                                    }
                                }*