在Android上的EditText上使用onClickListener()

时间:2013-07-12 02:55:22

标签: android android-edittext onclicklistener

我正在尝试制作一个Android应用程序来保持燃料消耗的标签。我有4个EditText即。

  1. Km阅读
  2. 燃料数量
  3. 燃油价格
  4. 总费用
  5. 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));
            }   
    
        }       
    

    向我推荐..再次感谢

1 个答案:

答案 0 :(得分:2)

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