0

我是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

4 回答 4

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,您的代码将比干净更干净。

ID不应该被过度使用!它们非常适合用户可以“更改”以处理这些更改(并享受 onSaveInstanceState() 自然行为)的视图,仅此而已!

国际海事组织。

于 2013-02-07T11:05:42.667 回答
0

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

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

然后用你明确的方法

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

{   
myList.get(x).setText("");
}
于 2013-02-07T00:01:42.057 回答
0

当您不再需要显示其中的数据时,为什么不将两个 editTexts 都设置为空呢?

EditText.setText("");

与 TextView 相同;

TextView.setText("");
于 2013-02-06T23:53:52.617 回答
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或任何地方初始化的实例变量。我还建议不要使用一个字母的变量名。

就个人而言,我会设置OnClickListeners 而不是onClickXML 中的属性。尽管使用 XMLonClick属性可能会减少代码行数,但不幸的是,它创建了布局和功能的非常紧密的耦合。我更喜欢 XML 用于布局,Java 用于功能。此外,被迫使用ids 相当于要求 XML 元素具有变量名,这使得布局代码更具可读性(这个按钮是什么?这个复选框是做什么用的?)。我看到使用该onClick属性的另一个问题是它强制您调用的方法公开,这对于其中许多方法没有意义。我更愿意通过阅读 Java 来了解 Activity 在功能上做了什么,并且我宁愿没有未引用的公共方法在我的 Activity 中浮动。

于 2013-02-06T23:57:41.113 回答