Android 使用“清除”按钮清除多个编辑文本字段
我已经研究了关于这个问题的其他问题,但解决方案对我来说并不适用。我有一个页面上的编辑文本字段的数量,并希望能够重置一个按钮按下他们。我从中实现了解决方案,但我有嵌套的线性布局,它只清除作为主容器直接子容器的edittext。我如何让它找到所有edittext字段,或者我必须引用每个字段 我的xml文件结构如下:Android 使用“清除”按钮清除多个编辑文本字段,android,android-layout,android-intent,Android,Android Layout,Android Intent,我已经研究了关于这个问题的其他问题,但解决方案对我来说并不适用。我有一个页面上的编辑文本字段的数量,并希望能够重置一个按钮按下他们。我从中实现了解决方案,但我有嵌套的线性布局,它只清除作为主容器直接子容器的edittext。我如何让它找到所有edittext字段,或者我必须引用每个字段 我的xml文件结构如下: <ScrollView> <LinearLayout android:id="@+id/MainParent"> <LinearLa
<ScrollView>
<LinearLayout android:id="@+id/MainParent">
<LinearLayout>
TextView
EditText
</LinearLayout>
<LinearLayout>
TextView
EditText
</LinearLayout>
<LinearLayout>
TextView
EditText
</LinearLayout>
EditText
<LinearLayout>
Button1
Button2
</LinearLayout>
</LinearLayout>
</ScrollView>
文本框
编辑文本
文本框
编辑文本
文本框
编辑文本
编辑文本
按钮1
按钮2
Java文件中的代码段:
ViewGroup group = (ViewGroup)findViewById(R.id.MainParent);
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
ViewGroup group=(ViewGroup)findViewById(R.id.MainParent);
for(int i=0,count=group.getChildCount();i
单击任何操作后,执行以下步骤:
EditText firstEditText = (EditText) findViewById(R.id.yoursXmlId);
firstEditText.setText("");
单击任何操作后,执行以下步骤:
EditText firstEditText = (EditText) findViewById(R.id.yoursXmlId);
firstEditText.setText("");
LinearLayout组=(LinearLayout)findViewById(R.id.MainParent);
for(int i=0,count=group.getChildCount();i
LinearLayout组=(LinearLayout)findViewById(R.id.MainParent);
for(int i=0,count=group.getChildCount();i
如果您对引用每个EditText不感兴趣,我会创建一个递归函数来处理层次结构
public void clearAll(ViewGroup root) {
for (int i = 0, j = root.getChildCount(); i < j, i++) {
View view = root.getChildAt(i);
if (view instanceof ViewGroup) {
clearAll((ViewGroup) view);
continue;
}
if (view instanceof EditText) {
((EditText) view).setText("");
continue;
}
}
}
如果您对具体引用每个EditText不感兴趣,我将创建一个递归函数来处理层次结构
public void clearAll(ViewGroup root) {
for (int i = 0, j = root.getChildCount(); i < j, i++) {
View view = root.getChildAt(i);
if (view instanceof ViewGroup) {
clearAll((ViewGroup) view);
continue;
}
if (view instanceof EditText) {
((EditText) view).setText("");
continue;
}
}
}
不过,我必须为每个edittext字段重复此代码。有没有办法避免这样做?您只需在onCreate()中声明edittext一次方法,并在所有编辑文本中设置空白文本中的一个函数,并在需要时调用该函数。我感觉您不想特别引用每个EditText。@nEx.Software您是正确的。我尝试了此解决方案的各种实现,我必须引用每个EditText。此答案不正确,我很抱歉您有什么建议吗?我必须为每个edittext字段重复此代码。有没有办法避免这样做?您必须在onCreate()中只声明一次edittext方法,并在所有编辑文本中设置空白文本中的一个函数,并在需要时调用该函数。我感觉您不想特别引用每个EditText。@nEx.Software您是正确的。我尝试了此解决方案的各种实现,我必须引用每个EditText。此答案不正确,我很抱歉你有什么建议吗?类似于下面希拉格·拉瓦尔的回答,我知道我错在哪里了。谢谢你,这不起作用,它仍然只是清除了编辑文本,这是一个主要父母的直系子女。类似于下面希拉格·拉瓦尔的回答,我知道我错在哪里了。谢谢你,这不起作用,它仍然很清楚是MainParent的直接子级的edittext