Android使用清除按钮清除所有EditText字段

JPM*_*JPM 44 android button clear android-edittext

如何EditText使用a 清除布局中的所有字段Clear Button.我有一个注册活动,有大约10个不同EditTexts.我知道我可以去拿一个具体的参考然后set.Text(""); 但我正在寻找一种更有活力的优雅方式.可能抓住Layout并遍历那里寻找EditText类型的所有项目,然后将其设置为"".不知道如何做到这一点,并尝试在网上搜索它,但没有运气.任何示例代码?

nec*_*ixy 63

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)

要使用此方法,只需按以下方式调用:

clearForm((ViewGroup) findViewById(R.id.sign_up));
Run Code Online (Sandbox Code Playgroud)

您可以将R.id.sign_up替换为XML文件的根布局ID.

我希望这会像我一样帮助很多人.

:)

  • 这段代码很棒,再次感谢!如果可以,我会赞成这20次! (4认同)

Mic*_*ael 29

您可以遍历视图组中的所有子项并清除所有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("");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请更正此行,因为强制转换非常重要:`ViewGroup group = findViewById(R.id.your_group);' 到`ViewGroup group =(ViewGroup)findViewById(R.id.your_group);` (3认同)
  • 可以将此ViewGroup应用于任何布局,例如我有一个主Linerlayout,所以如果我这样做,它会将活动中我所有edittext的文本设置为空吗? (2认同)

Mal*_*der 8

使用 editText.getText().clear();