Android 清除EditText字段中以前输入的文本

Android 清除EditText字段中以前输入的文本,android,android-edittext,Android,Android Edittext,哎,, 我正在尝试让我的editText窗口清除其内容,但出现以下情况之一: 1) 重新选择以输入不同的数据或 2) 按下按钮以输入预定数据 这不是提示文本。一旦预先确定的数据被输入,它就停留在那里,我无法清除它,甚至使用delete。 我曾尝试使用布尔值将editBox.setText(“”)放在onClick侦听器和addTextChangedListener(在方法之前和之后)中,以确定代码是否已经输入,但它只是忽略了它 foodBox.addTextChangedListener(new

哎,, 我正在尝试让我的editText窗口清除其内容,但出现以下情况之一: 1) 重新选择以输入不同的数据或 2) 按下按钮以输入预定数据

这不是提示文本。一旦预先确定的数据被输入,它就停留在那里,我无法清除它,甚至使用delete。 我曾尝试使用布尔值将editBox.setText(“”)放在onClick侦听器和addTextChangedListener(在方法之前和之后)中,以确定代码是否已经输入,但它只是忽略了它

foodBox.addTextChangedListener(new TextWatcher(){

        @Override
        public void afterTextChanged(Editable s) {

        }
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            addFood();
            valueAdded=true;
        }           
    });


    dogButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (valueAdded==true){
                foodBox.setText("");
                setFood(0.0);
            }
            isClicked=true;
            animal=1;
            addFood();
            valueAdded=true;//value in the box
                }


    });


    catButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (valueAdded){
               foodBox.setText("");}
            isClicked=true;
            animal=2;
            addFood();
            valueAdded=true;
            }

    });
            private void addFood() {
    try{
        aClass aob = new aClass();
        setFood(0.0);
        String a = this.foodBox.getText().toString();
        if(isClicked&&TextUtils.isEmpty(a)){
            if(animal==1){
                a=mob.getDog(); 
            }
            if(animal==2){
                a=mob.getCat();
            }
            this.foodBox.setText(a);
            double d=Double.parseDouble(a);
            setFood(d);
        }else{
            if(TextUtils.isEmpty(a)){
            a="0";
        }
        double d=Double.parseDouble(a);
        setFood(d);
        }
    } 
        catch (Exception e){
        this.showAnswer.setText("Please input animals in numbers");
        addFood();
    }
}
谢谢

我用来实现1)的唯一代码是:


host
只是一个编辑文本。还好吗?我认为这比实际情况更复杂。

要在单击“清除”按钮时清除,请执行以下操作:

firstName = (EditText) findViewById(R.id.firstName);

clear = (Button) findViewById(R.id.clearsearchSubmit);

clear.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.clearsearchSubmit);
        firstName.setText("");
    }
});
这对我有用。希望有帮助。

因为onClick对我不起作用,因为我必须按两次才能调用onClick Listener。另一种方法是setOnFocusChangeListener()


对于2)ashim888给出的解决方案效果很好。

这很奇怪。这可能与addFood方法中的代码有关吗?我不会使用TextChanged listener,尤其不是这样。您使用的valueAdded变量看起来非常愚蠢,您应该检查类似于
foodBox.getText().length()
的内容,以确保EditText字段中有数据。重新考虑你的设计。好的,谢谢。我在自学这么多愚蠢的东西:/不用担心,如果我太苛刻了,我很抱歉。:)娜娜,我很高兴得到帮助:)
firstName = (EditText) findViewById(R.id.firstName);

clear = (Button) findViewById(R.id.clearsearchSubmit);

clear.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.clearsearchSubmit);
        firstName.setText("");
    }
});
editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus){
                    editTextView.getText().clear();
                }
            }
        });