Как очистить все поля EditText
в макете с помощью Clear Button
. У меня есть активность регистрации, которая имеет около 10 различных EditTexts
. Я знаю, что могу пойти и получить ссылку на каждую из них, а затем set.Text("")
; Но я ищу более динамичный элегантный способ. Возможно, возьмите Layout
и пропустите все элементы там, где ищете типы EditText
, а затем установите их на ""
. Не уверен, как это сделать, и попытался найти в Интернете, но не повезло. Любой пример кода?
Android Очистка всех полей EditText с кнопкой Clear
Ответ 1
Ответ от @Pixie велик, но я хотел бы сделать это намного лучше.
Этот метод отлично работает, только если весь EditText находится в одном (одном) макете, но когда есть куча вложенных макетов, этот код не справляется с ними.
После того, как я почесал голову, я сделал следующее решение:
private void clearForm(ViewGroup group)
{
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
clearForm((ViewGroup)view);
}
}
Чтобы использовать этот метод, просто вызовите это следующим образом:
clearForm((ViewGroup) findViewById(R.id.sign_up));
Где вы можете заменить свой R.id.sign_up идентификатором корневого макета вашего XML файла.
Надеюсь, это поможет многим людям, как я.
:)
Ответ 2
Вы можете перебирать все дочерние элементы в группе просмотра и очищать все поля EditText
:
ViewGroup group = (ViewGroup)findViewById(R.id.your_group);
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
}
Ответ 3
Используйте editText.getText().clear();
Ответ 4
Используйте ediText.getText().clear();
Он работает как прелесть для меня.
Ответ 5
после нажатия любого действия сделать ниже шаг
((EditText) findViewById(R.id.yoursXmlId)).setText("");
или Очистить все поля EditText, итерации всех дочерних элементов:
ViewGroup group = (ViewGroup)findViewById(R.id.your_group);
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
}
или используйте простой шаг ниже:
editText.getText().clear();
Может быть полезно.
Ответ 6
В моем случае я сделал это.
public static void resetForm(ViewGroup group) {
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText) view).getText().clear();
}
if (view instanceof RadioGroup) {
((RadioButton)((RadioGroup) view).getChildAt(0)).setChecked(true);
}
if (view instanceof Spinner) {
((Spinner) view).setSelection(0);
}
if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0))
resetForm((ViewGroup) view);
}
}
Ответ 7
Я использовал это для вложенного LinearLayout, чтобы очистить EditTexts и RadioButtons
//метод clear private void clear (группа ViewGroup) { for (int я = 0, count = group.getChildCount(); i
if(view instanceof LinearLayout)
{
clear((ViewGroup) view);
}
else if(view instanceof EditText)
{
((EditText) view).getText().clear();
}
if (view instanceof RadioButton)
{
((RadioButton) view).setChecked(false);
}
}//end for
}//end method clear
Ответ 8
// Update answer
private void clearEditTextGroup(ViewGroup group){
for(int i=0 ; i< group.getChildCount(); i++){
View view = group.getChildAt(i);
if(view instanceof EditText){
// use one of clear code
}
if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
clearEditTextGroup((ViewGroup)view);
}
}
используйте один из этих кодов, чтобы очистить текст edittext
edittext.getText().clear();
или
edittext.setText(null);
или
edittext.setText("");
Ответ 9
использование
editText.getText().clear();
или setText как пустой, используя этот ниже код
editText.setText(");