我是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>
我非常感谢你的回答。
答案 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。