Подтвердить что ты не робот

Android Очистка всех полей EditText с кнопкой Clear

Как очистить все поля EditText в макете с помощью Clear Button. У меня есть активность регистрации, которая имеет около 10 различных EditTexts. Я знаю, что могу пойти и получить ссылку на каждую из них, а затем set.Text(""); Но я ищу более динамичный элегантный способ. Возможно, возьмите Layout и пропустите все элементы там, где ищете типы EditText, а затем установите их на "". Не уверен, как это сделать, и попытался найти в Интернете, но не повезло. Любой пример кода?

4b9b3361

Ответ 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(");