如何使用EditText
清除布局中的所有Clear Button
字段。我有一个注册活动,大约有10个不同的EditTexts
。我知道我可以去抓一个具体的参考,然后set.Text("")
;但我正在寻找一种更有活力的优雅方式。可能会抓住Layout
并遍历其中的所有项目,查找EditText
类型,然后将其设置为""
。不知道如何做到这一点,并尝试在网上搜索它,但没有运气。任何示例代码?
答案 0 :(得分:59)
@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文件的根布局ID。
我希望这会像我一样帮助很多人。
:)
答案 1 :(得分: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("");
}
}
答案 2 :(得分:9)
使用editText.getText().clear();
答案 3 :(得分:1)
点击步骤
后执行任何操作 ((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();
可能会有所帮助。
答案 4 :(得分:0)
就我而言,我已经做到了。
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);
}
}
答案 5 :(得分:0)
我用它来嵌套LinearLayout来清除EditTexts和RadioButtons
//方法清除 private void clear(ViewGroup组) { for(int i = 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
答案 6 :(得分:0)
你总能做到这一点......它对我有用:
mClearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditName.getText().clear();
mEditSummary.getText().clear();
mEditPrice.getText().clear();
mEditQuantitiy.getText().clear();
}
});
这样你有一个胖按钮可以为你清除所有字段
答案 7 :(得分:0)
非常简单。在按钮功能中输入 -
finish();
startActivity(this,YourCurrentActivity.class);
尽可能简单。 欢迎。
答案 8 :(得分:0)
我创建了一个重置按钮并编写了一个重置 onclick 方法如下:
public void reset(View View){
Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
它对我有用,而且在没有 addflags 部分的情况下也能工作。但我想知道这是否是一个好方法。
答案 9 :(得分:-1)
// 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("");
答案 10 :(得分:-1)
使用
editText.getText().clear();
或setText设置为Empty
editText.setText(");