Java “清除编辑文本字段中的所有文本”按钮

Java “清除编辑文本字段中的所有文本”按钮,java,android,button,android-edittext,Java,Android,Button,Android Edittext,我试图在Android中运行一个程序,当用户按下全部清除按钮时,清除EditText字段中的所有文本。下面是我到目前为止的代码,目前它还没有按计划工作。我不熟悉java和adroid应用程序开发。请告诉我如何解决这个问题,如果可能的话,请举例说明。非常感谢 CEMMainActivity.java public class CEMMainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle sa

我试图在Android中运行一个程序,当用户按下全部清除按钮时,清除EditText字段中的所有文本。下面是我到目前为止的代码,目前它还没有按计划工作。我不熟悉java和adroid应用程序开发。请告诉我如何解决这个问题,如果可能的话,请举例说明。非常感谢

CEMMainActivity.java

public class CEMMainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) { // runs every time the app runs
    super.onCreate(savedInstanceState); // loads saved instant state
    setContentView(R.layout.activity_cemmain);//sets what the app will look like based on the graphical design created

    if (savedInstanceState == null) {// action if app does not start up correctly
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }

    // Clears all text in EditText fields

    Button clearalltext  = (Button) findViewById(R.id.cleartext); 
    clearalltext.setOnClickListener(new OnClickListener() {
        public void onClick(View c) {           
        ViewGroup group = (ViewGroup) findViewById(R.id.cleartext);
        clearText(group);       
        });
    }

        private void clearText((ViewGroup)group); {
            // TODO Auto-generated method stub
            for (int i = 0, count = group.getChildCount(); i < count; ++i) {
        View view = group.getChildAt(i);
        if (view instanceof EditText) {
            ((EditText)view).setText("");

        ViewGroup view;
        if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
            clearText((ViewGroup)group);
        }
        }
            }
公共类CEMMainActivity扩展了ActionBarActivity{
@凌驾
受保护的void onCreate(Bundle savedInstanceState){//每次应用程序运行时都会运行
super.onCreate(savedInstanceState);//加载保存的即时状态
setContentView(R.layout.activity_cemmain);//根据创建的图形设计设置应用程序的外观
如果(savedInstanceState==null){//应用程序无法正确启动时的操作
getSupportFragmentManager().beginTransaction()
.add(R.id.container,新的占位符片段()).commit();
}
//清除EditText字段中的所有文本
按钮clearalltext=(按钮)findViewById(R.id.cleartext);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图c){
ViewGroup group=(ViewGroup)findViewById(R.id.cleartext);
明文(组);
});
}
私有无效明文((视图组)组){
//TODO自动生成的方法存根
for(int i=0,count=group.getChildCount();i0))
明文((视图组)组);
}
}
}
fragment_cemmain.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="clinical.equipment.monitor.CEMMainActivity$PlaceholderFragment" >
.....

<Button
    android:id="@+id/cleartext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/findequip"
    android:layout_marginTop="56dp"
    android:onClick="cleartext"
    android:text="@string/cleartext" />

....

</RelativeLayout>

.....
....
(ViewGroup)findViewById(R.id.cleartext);
我认为cleartext不是一个视图组,你可以使用onclick参数c的getParent()方法,比如c.getParent()返回ViewGroup相对布局,然后你可以获取你在cleartext方法中定义的所有子对象

或者您也可以将id提供给relativelayout

  // Clears all text in EditText fields

    Button clearalltext  = (Button) findViewById(R.id.cleartext); 
    clearalltext.setOnClickListener(new OnClickListener() {
        public void onClick(View c) {           
        ViewGroup group = (ViewGroup) c.getParent();
        clearText(group);       
        });
    }

我认为您的问题在于将按钮id传递给视图组,因此其子计数将为零。请将父布局id传递给视图组。对下面的id进行更改

ViewGroup group = (ViewGroup) findViewById(R.id.cleartext);
将明文替换为父布局id,即RelativeLayout id

 ViewGroup group = (ViewGroup) findViewById(R.id.cleartext); 

它将访问按钮,并且只清除按钮的文本。为RelativeLayout分配一个id,并使用它清除所有孩子的文本。

显示您的XML结构。您的
EditText
s如何放置在布局中是重要的。您尝试过以下解决方案吗???有什么适合您的吗?谢谢您的回答。我为您的回答道歉r我的回复很晚。我正在尝试您提出的解决方案,我会尽快回复您。感谢您的建议。我无法为RelativeLayout分配id而不出错,因此,我尝试用EditText id替换cleartext,因为代码的目的是清除将这些字段设置为文本。我无法运行它,因为我遇到了两个错误:1。“标记“clearText”上的语法错误,=此标记后应出现此错误(包括=符号会出现更多错误)。我遇到的第二个错误是“type new View中的方法clearText()。OnClickListener(){}不适用于参数(ViewGroup)“。下面是CEMMainActivity.java文件中修改的代码。ViewGroup=(ViewGroup)findViewById(R.id.equiptypetext);ViewGroup group2=(ViewGroup)findViewById(R.id.EquipId Text);clearText(group1);clearText(group2);}//清除equiptypetext编辑文本字段private void clearText((ViewGroup)group1);{for(int i=0,count=group.getChildCount();i0))明文((ViewGroup)组1);}}