【问题标题】:Clear all text in EditText fields button清除 EditText 字段中的所有文本按钮
【发布时间】:2014-07-29 15:30:53
【问题描述】:

我正在尝试在 Android 中运行一个程序,以在用户按下全部清除按钮时清除 EditText 字段中的所有文本。下面是我到目前为止的代码,目前它没有按计划工作。我是 java 和 android 应用程序开发的新手。如果可能的话,请让我知道如何解决这个问题,并提供示例。非常感谢。

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>

【问题讨论】:

  • 显示您的 XML 结构。您的EditTexts 如何放置在布局中很重要。
  • 你尝试过以下解决方案???有什么适合你的吗??
  • 感谢您的回复。我为我迟到的回复道歉。我正在尝试您提出的所有解决方案,我会尽快回复您。

标签: java android button android-edittext


【解决方案1】:

(ViewGroup) findViewById(R.id.cleartext); 我认为明文是按钮而不是视图组,您可以使用 onclick 参数参数 c 的 getParent() 方法,例如返回 ViewGroup 相对布局的 c.getParent() 然后您可以获取所有子项这将由您在 clearText 方法中定义...

或者你也可以给 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);       
        });
    }

【讨论】:

    【解决方案2】:

    我认为您的问题是将按钮 id 传递给查看组,因此其子项计数将为零。请将您的父布局 id 传递给查看组。修改下面的id

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

    用你的父布局ID替换明文。即RelativeLayout id

    【讨论】:

    • 感谢您的建议。我无法在没有错误的情况下为 RelativeLayout 分配 id,因此,我尝试用 EditText id 替换明文,因为代码的目的是清除这些字段的文本。我一直无法运行它,因为我遇到了两个错误:1.“令牌“clearText”上的语法错误,= 此令牌之后的预期(包括 = 符号会引发更多错误)。
    • 我遇到的第二个错误是“new View.OnClickListener(){} 类型中的 clearText() 方法不适用于参数 (ViewGroup)”。
    • 下面是CEMMainActivity.java文件中修改后的代码。
    • ViewGroup = (ViewGroup)findViewById(R.id.equiptypetext); ViewGroup group2 = (ViewGroup)findViewById(R.id.equipidtext);明文(组1);明文(组2); }
    • // 清除equiptypetext EditText 字段 private void clearText((ViewGroup)group1); { for (int i = 0, count = group.getChildCount(); i 0)) clearText((ViewGroup)group1); } }
    【解决方案3】:
     ViewGroup group = (ViewGroup) findViewById(R.id.cleartext); 
    

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

    【讨论】:

      猜你喜欢
      • 2011-08-10
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多