选中复选框后,自动清除先前输入的edittext数据

时间:2013-07-21 13:54:26

标签: android

我有3个复选框和2个edittexts。当用户选中一个复选框并在一个edittext中输入数据时,就会进行计算。如果我选中另一个复选框,则edittext值应自动清除。然而,即使我检查了其他复选框后,edittexts中的数据仍然存在。我尝试关闭应用程序的finish()。知道如何在不关闭应用程序的情况下实现这一目标吗?

对不起,如果这个问题听起来很奇怪。我只是在学习android 谢谢。

我的onCheckedChangedListener的代码

public void onCheckedChanged(CompoundButton predictionChkView, boolean isPredictionChecked)
    {
        // TODO Auto-generated method stub


        switch(predictionChkView.getId())
        {
        case R.id.chkLastMileage1:

                                        isChkLastMileage1=true;
                                        chkLastMileage5.setChecked(false);
                                        chkLastMileage10.setChecked(false);
                                        ETPredictKm.setText("");
                                        ETPredictFuelQty.setText("");

                                        break;

        case R.id.chkLastMileage5:
                                        isChkLastMileage5=true;
                                        chkLastMileage1.setChecked(false);
                                        chkLastMileage10.setChecked(false);
                                        ETPredictKm.setText("");
                                        ETPredictFuelQty.setText("");
                                        break;
        case R.id.chkLastMileage10:

                                        isChkLastMileage10 =true;
                                        chkLastMileage1.setChecked(false);
                                        chkLastMileage5.setChecked(false);
                                        ETPredictKm.setText("");
                                        ETPredictFuelQty.setText("");
                                        break;
        }

    }

Code for the onFocusChangedListener

public void onFocusChange(View predictionFocusView, boolean hasPredictionETFocus) 
    {

        // TODO Auto-generated method stub
        FuelStoredInfo predictInfo = new FuelStoredInfo(this);
        predictInfo.open();
        predictInfo.getAvgMileage(this);
        predictInfo.close();
        try
        {
            predictKm = Long.parseLong(ETPredictKm.getText().toString());
            predictFuetlQty = Double.parseDouble(ETPredictFuelQty.getText().toString());



        }
        catch(NumberFormatException ne)
        {
            ne.printStackTrace();
        }
        if(isChkLastMileage1 ==true || isChkLastMileage5==true||isChkLastMileage10==true)
        {
        if(ETPredictKm.hasFocus())
            {
            ETPredictKm.setText("");
            if(predictFuetlQty!=0)
            {
                predictKm =(long) (predictionMileage*predictFuetlQty);
                //setPredictKm(predictKm);
                ETPredictKm.setText(String.valueOf(predictKm));
            }
            }
            else if(ETPredictFuelQty.hasFocus())
            {
                ETPredictFuelQty.setText("");
                if(predictKm!=0)
                {
                    predictFuetlQty =predictKm/predictionMileage;
                    //setPredictFuetlQty(predictFuetlQty);
                    ETPredictFuelQty.setText(new DecimalFormat("##.##").format(predictFuetlQty));
                }

            }   
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Please check a checkbox!", Toast.LENGTH_LONG).show();
        }

    }

public void onClick(View v) 
    {
        // TODO Auto-generated method stub

                                ETPredictKm.setText("");
                                ETPredictFuelQty.setText("");
                                chkLastMileage1.setChecked(false);
                                chkLastMileage5.setChecked(false);
                                chkLastMileage10.setChecked(false);


    }

5 个答案:

答案 0 :(得分:0)

添加到您的功能。

EditText editText = (EditText)findViewById(R.id.edittext);
editText.setText("");

答案 1 :(得分:0)

当您选中其他复选框时,请执行此操作

 edittext.setText("");

其他EditText

修改 -----

为您的所有FocusChangeListener添加EditText并执行此操作----

ETPredictKm.setOnFocusChangeListener(new OnFocusChangeListener()
    {
        @Override
        public void onFocusChange(View v, boolean hasFocus) 
        {
            if (hasFocus)
                ETPredictKm.setText("");
        }
    });

答案 2 :(得分:0)

如果您存储对editText的引用,则可以调用

editText.setText("");

当复选框处于所需状态时,在onCheckedChange侦听器中执行此操作。

答案 3 :(得分:0)

在oncheckedchangelistener上添加一个复选框,然后输入edittest.setText("");内部。

做这样的事情:

checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        edittext.setText("");
        }
    });

另外,不要忘记为你的editexts,复选框等声明变量:

//example
final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox1);

让我知道它是否有效:)

替代:

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if ( checkbox.isChecked() )
            {
                edittext.setText("");
            }

        }
    });

答案 4 :(得分:0)

CheckBox check1 = (CheckBox) findViewById(R.id.checkbox1);
Checkbox check2 = (Checkbox) findViewById(R.id.checkbox2);
 if (check1.isChecked()) {
     EditText myEditText = (EditText) findViewById(R.id.edit_text_1);
     myEditText.setText("");
 }
 if (check2.isChecked()) {
     EditText myEditText2 = (EditText) findViewById(R.id.edit_text_2);
     myEditText1.setText("");
 }