Очистка многострочного EditText

Я пытаюсь очистить многострочное поле EditText внутри метода OnEditorActionListener.onEditorAction.

Но используя любой из очевидных способов, т.е.

((EditText) view).getEditableText().clear(); ((EditText) view).getEditableText().clearSpans(); ((EditText) view).setText(""); 

Только очищает видимые символы – оставляя новые строки в поле (которые затем должны быть удалены вручную).

Есть ли способ «полностью» очистить многострочное поле EditText? (Или, по крайней мере, кто-нибудь знает, почему вышеуказанное не работает?)

Solutions Collecting From Web of "Очистка многострочного EditText"

Решено (через минуту после хорошего ночного сна) – новая строка была добавлена ​​после очистки текста, потому что реализация метода onEditorAction возвращалась false (по другим причинам).

Возврат true указывает, что «ввод» обработан / потреблен, а clear () ведет себя как ожидалось:

 edittext.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView view,int actionId,KeyEvent event) { post(view.getText().toString()); ((EditText) view).getEditableText().clear(); return true; } }); 

У меня нет IDE для тестирования, но вы можете попробовать:

  • ((EditText) view).clearComposingText() Это метод наследования из TextView
  • Не так элегантно, но, возможно, функционально: setSingleLine = true, а затем снова false . Может быть, полезно, пока кто-то не сможет обеспечить что-то лучшее …

Существует способ с setMaxLines :

 yourEditText.getEditableText().clear(); yourEditText.setMaxLines(1); 

Может быть, мне немного повезло, но:

 ((EditText) view).setText(null); 

Я использовал это, когда у меня была четкая кнопка в приложении

  Button clearButton = (Button)findViewById(R.id.clear); clearButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { number = (EditText) findViewById(R.id.text_reading); number.setText(""); } });