清除EditText字段中的所有文本按钮

问题描述 投票:0回答:3

我正试图在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);
        }
        }
            }

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>
java android button android-edittext
3个回答
0
投票

(ViewGroup) findViewById(R.id.cleartext); 我认为cleartext是按钮而不是视图组,你可以使用getParent()方法的onclick参数c,如 c.getParent() 返回ViewGroup Relative Layout,然后你可以在clearText方法中获取所有你定义的子代......或者你也可以给relativelayout一个ID。

或者你也可以给relativelayout一个ID。

  // 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);       
        });
    }

0
投票

我想问题在于你把按钮的id传给了视图组,所以它的子代数将为零,请把你的父代布局id传给视图组。

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

用你的父版图id代替cleartext,即RelativeLayout id。


0
投票
 ViewGroup group = (ViewGroup) findViewById(R.id.cleartext); 

它将访问按钮,并且只清除按钮的文本。为RelativeLayout指定一个id,并使用它来清除所有childs的文本。

© www.soinside.com 2019 - 2024. All rights reserved.