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