Limpando o texto inserido anteriormente no campo EditText
-
29-10-2019 - |
Pergunta
Ei, Estou tentando fazer minha janela editText limpar seu conteúdo quando: 1) É selecionado novamente para inserir dados diferentes ou 2) Um botão é pressionado para inserir dados predeterminados
Este não é um texto de dica.No momento, uma vez que os dados pré-determinados são inseridos, eles permanecem lá e não consigo apagá-los, mesmo usando delete. Tentei colocar editBox.setText ("") no ouvinte onClick e no addTextChangedListener (ambos os métodos before e on) usando um booleano para determinar se o código já foi inserido, mas ele simplesmente o ignora.
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();
}
}
Obrigado
Solução
Errr ...
O único código que uso para atingir 1) é:
// Clear text when clicked
host.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
host.setText("");
}
});
host
sendo apenas um EditText.Funciona bem?Acho que você está tornando isso mais complicado do que realmente é.
Outras dicas
Para limpar quando o botão Limpar é clicado:
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("");
}
});
Funcionou para mim.Espero que ajude.
Para 1) onClick não funcionou para mim, pois tive que pressionar duas vezes para chamar onClickListener.Outra abordagem seria setOnFocusChangeListener ()
editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
editTextView.getText().clear();
}
}
});
Para 2) a solução fornecida por ashim888 funciona bem.