-7

我正在尝试制作一个 android 应用程序来记录油耗。我有 4 个 EditText 即。

  1. 公里读数
  2. 燃料量
  3. 燃油价格
  4. 总花费

公里读数输入是强制性的,而在其余 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));
        }   

    }       

为我工作..再次感谢

4

1 回答 1

2

你不需要onClickListenerEditText它主要用于按钮。对于 EditText,您可以使用setOnTouchListener. 然后onTouch检查是否填写了先前的字段。如果不是,则显示错误,否则进行计算。在尝试开发任何应用程序之前先阅读基础知识,否则您将错过许多重要概念。

于 2013-07-12T04:00:13.280 回答