我正在尝试制作一个Android应用程序来保持燃料消耗的标签。我有4个EditText即。
Km读取输入是强制性的,而在其余3个中,用户需要任何两个。因此,当用户点击第3个Edittext时,他会自动获取在其他两个帮助下获得的计算值。帮助?
嗨!
感谢大家提出的所有建议..不,我不希望你们都为我工作。我第一次尝试在这里提出这个问题。我认为这是我自己和代码所以它可能对将来需要它的人有用。
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.fuelexpense);
ETKm = (EditText)findViewById(R.id.ETKm);
ETFuelQty = (EditText)findViewById(R.id.ETFuelQty);
ETFuelPrice = (EditText)findViewById(R.id.ETFuelPrice);
ETTotalCost = (EditText)findViewById(R.id.ETTotalCost);
btnSave = (Button)findViewById(R.id.btnSave);
btnClear = (Button)findViewById(R.id.btnClear);
chkFullTank = (CheckBox)findViewById(R.id.chkFullTank);
btnSave.setOnClickListener(this);
btnClear.setOnClickListener(this);
ETFuelQty.setOnFocusChangeListener(this);
ETFuelPrice.setOnFocusChangeListener(this);
ETTotalCost.setOnFocusChangeListener(this);
}
public void onFocusChange(View EditTextFocus , boolean hasFocus)
{
// TODO Auto-generated method stub
try
{
km= Long.parseLong(ETKm.getText().toString());
fuelQty= Integer.parseInt(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(newDecimalFormat("##.##").format(totalCost));
}
else if(ETFuelQty.hasFocus())
{
if((fuelPrice!=0)&&(totalCost!=0))
fuelQty= (int) (totalCost/fuelPrice);
ETFuelQty.setText(String.valueOf(fuelQty));
}
else if(ETFuelPrice.hasFocus())
{
if((fuelQty!=0)&&(totalCost!=0))
fuelPrice=totalCost/fuelQty;
ETFuelPrice.setText(String.valueOf(fuelPrice));
}
}
向我推荐..再次感谢
答案 0 :(得分:2)
onClickListener
您不需要EditText
,按钮主要需要它。对于EditText,您可以使用setOnTouchListener
。然后在onTouch
中检查以前的字段是否已填满。如果没有,显示错误否则进行计算。
在尝试开发任何应用程序之前先阅读基础知识,否则您将错过许多重要概念。