2015-02-28 6 views
0

Я пытаюсь очистить поле textedit, когда оно сфокусировано. Я знаю о подсказке, но я хочу, чтобы текст textedit каждый раз, когда пользователь его использует, также если он заполнен пользователем (теперь пользователю нужно очищать поле вручную каждый раз, когда он хочет изменить значение). Я загружаю фрагменты в свое приложение, поэтому есть много полей edittext, которые я хочу очистить от фокуса, так что есть универсальный метод для этого, или я должен делать это для всех полей отдельно? Должен ли я создать другой java-файл для этого метода или поместить внутри onCreate?Как очистить поле android textedit

+2

Это кажется очень удобно враждебным. Согласно вашему плану, если пользователь вводит что-то в поле, переходит к другому виджету, понимает, что ему нужно что-то исправить в исходном поле и возвращается, чтобы отредактировать его ... вы уничтожили то, что они набрали изначально. – CommonsWare

+0

Не делайте этого так. Вместо этого укажите кнопку сброса, которая очищает все поля, если пользователь этого желает. –

ответ

0

Вы должны вас OnFocusChangeListener, как показано в коде ниже:

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

И должен ли я использовать метод onCreate? –

+0

@awdre yes it right place –

+0

теперь каждый раз, когда ваш EditText потерял фокус и вернул его, текст редактирования будет ясным –

1

Вам нужно добавить onClickListener и установить текстовое поле в пустую строку при нажатии. Вам нужно добавить слушателя для каждого текстового поля, но вы можете повторно использовать один и тот же прослушиватель, потому что функциональность одинакова. Вы можете установить слушателя на onCreate, это нормально.

0

просто установить View.OnFocusChangeListener с методом setOnFocusChangeListener(View.OnFocusChangeListener l).

В обратном вызове onFocusChange(View v, boolean hasFocus) вы можете сделать следующее:

if (hasFocus && v instanceof EditText) { 
    ((EditText) v).setText(""); 
} 
+0

вам не нужно проверять экземпляр, если вы используете OnFocusChangeListener только для EditText –

+0

OnFocusChangeListener можно использовать с любым представлением. Неправильная практика - полагаться на представление как EditText, так как это может сломать ваш код один раз. Он работает с вашим решением, потому что вы используете встроенный класс. Однако, поскольку у него больше просмотров, было бы лучше иметь один класс, который реализует интерфейс, и установить его для всех EditTexts. – ph1lb4

+0

Нет, Конрад прав. Вы устанавливаете слушателя на нужные вам виды. Нет необходимости проверять EditText. Он будет разорван, только если вы установите этот прослушиватель на представление без редактирования, что не имеет никакого смысла. Твой плохая практика, потому что в этом случае это не сработает, и ты не знаешь почему. Лучше получить исключение, чтобы вы знали, что сделали это неправильно. – m0skit0