如何清除几个EditTexts中的条目?

时间:2013-02-06 23:51:47

标签: android

我是java和android的新手所以请原谅我,如果我问简单的问题。 我有一个应用程序需要用户输入两个EditTexts。这些输入是多路的,结果显示在TextView中。我想使用“清除条目”按钮清除用户条目的内容和显示结果。有没有办法做到这一点?

这是一个应用程序代码。

package c.example.rectangle;

import android.os.Bundle;

import android.view.View;
import android.app.Activity;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;



public class MainActivity extends Activity implements OnClickListener{

    EditText l;
     EditText w;
     TextView a;
     Button b;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  

        l = (EditText) findViewById(R.id.length);
        w = (EditText) findViewById(R.id.width);
        a = (TextView) findViewById(R.id.lblarea);
        b = (Button) findViewById(R.id.calculate);

        b.setOnClickListener(this);

    }

    public void onClick(View v) {
        calculateRectangle(l.getText().toString(), w.getText().toString());


    }
    private void calculateRectangle(String clength, String cwidth){


        double area = Double.parseDouble(clength)*Double.parseDouble(cwidth);

        a.setText(String.valueOf(area)); 
}}

这是我的XML代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#8B4513"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/label1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:background="#2F4F4F"
        android:gravity="center"
        android:text="@string/rect"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#8B4513"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/label2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="50dp"
            android:background="#2F4F4F"
            android:gravity="center"
            android:text="@string/cm"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/length"
            android:layout_width="110dp"
            android:layout_height="21dp"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="50dp"
            android:background="#2F4F4F"
            android:ems="10"
            android:gravity="center"
            android:hint="@string/help"
            android:inputType="text" />


    </LinearLayout>

 <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#8B4513"
        android:orientation="horizontal" >

    <TextView
        android:id="@+id/label3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#2F4F4F"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="20dp"
        android:text="@string/breadth"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/width"
        android:layout_width="110dp"
        android:layout_height="21dp"
        android:layout_marginLeft="33dp"
        android:layout_marginTop="20dp"   
        android:background="#2F4F4F"
        android:inputType="text"
        android:hint="@string/help"

        android:ems="10" 
        android:gravity="center"
        >

        <requestFocus />
    </EditText>

</LinearLayout>

 <Button
     android:id="@+id/calculate"
     android:layout_width="fill_parent"
     android:layout_marginLeft="100dip"
     android:layout_marginRight="100dip"
     android:layout_height="wrap_content"
     android:text="@string/calculate"
     android:layout_marginTop="20dp" />

 <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#8B4513"
        android:orientation="horizontal" >

 <TextView
     android:id="@+id/label4"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="30dp"
     android:layout_marginTop="20dp"
     android:background="#2F4F4F"
     android:text="@string/area"
     android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
     android:id="@+id/lblarea"
     android:layout_width="110dp"
     android:layout_height="21dp"
     android:layout_marginLeft="60dp"
     android:layout_marginTop="20dp"
     android:background="#2F4F4F"
     android:gravity="center"/>
 </LinearLayout>

 <Button
     android:id="@+id/clear"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_marginLeft="100dip"
     android:layout_marginRight="100dip"
     android:layout_marginTop="20dp"
     android:text="@string/clear" />

</LinearLayout>

我非常感谢你的回答。

4 个答案:

答案 0 :(得分:0)

为什么不再将editTexts设置为空时不再需要显示它们中的数据?

EditText.setText("");

与TextView相同;

TextView.setText("");

答案 1 :(得分:0)

如果要创建清除按钮,请执行以下操作。

在xml中创建一个按钮:

<Button
     android:id="@+id/clear_button"
     ... you own layout prefs ...
/>

在代码中为按钮创建一个监听器:

OnClickListener clearButtonListener = new OnClickListener(){
  @Override
  public void onClick(View view) {          
    ((EditText)findViewById(R.id.id_for_text_box_a)).setText("");
    //...do this for all your edit texts that you want to clear         
  }
};

将监听器连接到按钮

Button clearButton = (Button) findViewById(R.id.clear_button);
clearButton.setOnClickListener(clearButtonListener);

或者,不是在侦听器中通过id查找编辑文本,而是可以在onCreate或任何地方初始化的实例变量。我还建议不要使用一个字母的变量名。

就个人而言,我会在XML中设置OnClickListener而不是onClick属性。虽然使用XML onClick属性可能相当于更少的代码行,但遗憾的是它创建了一个非常紧密的布局和功能耦合。我更喜欢使用XML进行布局,使用Java进行功能。此外,被迫使用id等于要求XML元素具有变量名称,这使得更易读的布局代码(这个按钮是什么?这个复选框是什么?)。我在使用onClick属性时遇到的另一个问题是它强制你调用的方法是公共的,这对于许多这些方法来说并没有多大意义。 我更喜欢通过阅读Java来理解一个Activity在功能上的作用,我宁愿在我的活动中不会有未引用的公共方法。

答案 2 :(得分:0)

如果您想要遍历它们,可以将它们放在列表中,然后使用for循环将文本设置为“”

List<EditText> myList = new List<EditText>();
myList.add(editText1);

然后用你明确的方法

for (int x = 0; x < myList.size(); x++

{   
myList.get(x).setText("");
}

答案 3 :(得分:0)

为什么没有人似乎使用真正有用的android:onClick

<Button
    ...
    android:text="@string/calculate"
    android:onClick="calculate" />
<Button
    ...
    android:text="@string/clear"
    android:onClick="clearForm" />

通过以下活动:

class MyActivity extends Activity
{
    ...
    /**
     * Calculate
     * android:onClick="calculate"
     */
    public void calculate(View view)
    {
        // Handle click on your 'Calculate' button
    }

    /**
     * Clear form
     * android:onClick="clearForm"
     */
    public void clearForm(View view)
    {
        int[] ids = new int[]{R.id.length, R.id.width};
        for(int id : ids)
        {
            ((EditText) this.findViewById(id).)setText("");
        }
    }
}

这样,你不必关心id,你的代码会比干净更干净。

不应该过度使用Ids!它们非常适合用户可以“更改”以处理这些更改(以及享受onSaveInstanceState()自然行为)的视图,但就是这样!

IMO。