Löschen des zuvor eingegebenen Textes im Feld EditText
-
29-10-2019 - |
Frage
Hey, Ich versuche, mein editText-Fenster dazu zu bringen, seinen Inhalt zu löschen, wenn: 1) Es wird erneut ausgewählt, um andere Daten einzugeben oder 2) Eine Taste wird gedrückt, um vorbestimmte Daten einzugeben
Dies ist kein Hinweistext.Sobald die vorgegebenen Daten eingegeben wurden, bleiben sie dort und ich kann sie nicht löschen, selbst wenn ich sie lösche. Ich habe versucht, editBox.setText ("") in den onClick Listener und den addTextChangedListener (sowohl vor als auch nach Methoden) einzufügen, indem ich einen Booleschen Wert verwendete, um festzustellen, ob bereits Code eingegeben wurde, dieser jedoch ignoriert.
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();
}
}
Danke
Lösung
Errr...
The only code I use to achieve 1) is:
// Clear text when clicked
host.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
host.setText("");
}
});
host
just being an EditText. Works just fine? I think you are making this more complicated than it is.
Andere Tipps
To clear When Clear Button is Clicked:
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("");
}
});
It Worked For me. Hope It Helps.
For 1) onClick did not work for me as I had to press twice to call onClickListener. Other approach would be setOnFocusChangeListener()
editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
editTextView.getText().clear();
}
}
});
For 2) solution given by ashim888 works well.