2011-05-05 71 views
5

嘿, 我试图让我的EDITTEXT窗口清除其内容时任: 1)重选进入不同的数据或 2)按下按钮到预定的输入数据清除先前输入的文本中的EditText场

这不是提示文本。此时一旦输入了预定的数据,它就会停留在那里,即使使用删除,我也无法清除它。 我已经尝试在onClick监听器和addTextChangedListener(前后都使用布尔值)中添加editBox.setText(“”),以确定代码是否已经输入,但它只是忽略它。

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(); 
    } 
} 

感谢

回答

7

Errr ...

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

// Clear text when clicked 
    host.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      host.setText(""); 
     } 
    }); 

host只是被一个EditText。工作得很好?我认为你正在使这个比现在更复杂。

+0

它很奇怪。这可能与addFood方法中的代码有关吗? – Broo 2011-05-05 13:37:29

+0

我不会使用TextChanged侦听器,特别是不会那样。 valueAdded变量看起来很愚蠢,你应该检查'foodBox.getText()。length()'之类的东西,而不是确保EditText字段中有数据。重新思考你的设计。 – Klaus 2011-05-05 13:42:04

+0

摆脱“isClicked”... – Klaus 2011-05-05 13:44:58

3

要清除当清除按钮被点击:

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(""); 
    } 
}); 

它为我工作。希望能帮助到你。

0

对于1)onClick没有为我工作,因为我不得不按两次来调用onClickClickListener。另一种方法是setOnFocusChangeListener()

editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if(hasFocus){ 
        editTextView.getText().clear(); 
       } 
      } 
     }); 

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