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

时间:2011-04-21 07:05:16

标签: android button android-edittext clear

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

11 个答案:

答案 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(");