我有一个简单的计算器,它有6个EditText视图,用户可以在其中输入数字来执行简单的数学函数。这个应用程序将满足重复的任务,其中用户将输入信息,按下提交按钮,答案显示在一个单独的textView中。
我想添加一个简单的“清除”按钮,它将重置表单,以便用户可以开始新的计算,EditText视图将再次显示用户输入的提示。
有没有一个“重置”类型的功能,可以清除所有的表单数据并重新加载提示,或者我必须杀死应用程序并重新启动它?如果是这样的话,怎样做才是一个好的起点呢?
谢谢!
发布于 2011-08-10 23:19:30
要做到这一点,最基本的方法是简单地重置EditText视图。如果您有驱动这些字段更新的逻辑,那么将它们重置为空的String并请求“重新计算”来更新提示。
如下所示:
private void onClear()
{
EditText firstField = (EditText)this.findById(R.id.firstField);
EditText secondField = (EditText)this.findById(R.id.secondField);
//...etc...
if (firstField != null) firstField.setText("");
if (secondField != null) secondField.setText("");
updateHints();
}
private void updateHints()
{
//Logic for your "hints"
}发布于 2011-08-10 23:20:55
不,你必须自己去实现它。我建议您使用要重置的所有EditTexts (R.id.xyz)的ID创建一个整型数组。然后创建一个循环,对数组中的每个EditTexts执行.setText()操作,您可以在每次希望清除字段时调用该循环。类似于:
private void resetFields() {
EditText temp;
for (int i = 0; i < myEditTexts.length; i++) {
temp = (EditText) findViewById(textViews[i]);
temp.setText("");
}
}发布于 2014-06-10 10:12:04
我的答案是一种更好的方法,但它仍然是一种硬编码。任何人都可以找到另一种更快的方法,请分享。
protected void clearForm() {
Button btnClear = (Button) findViewById(R.id.btn_clear_text);
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText temp;
final int[] txtId = new int[] {
R.id.txt_s_free_word,
R.id.txt_s_property_name,
R.id.txt_s_ad_expense_from,
R.id.txt_s_ad_expense_to,
R.id.txt_s_station
};
for (int i = 0; i < txtId.length; i++) {
temp = (EditText) findViewById(txtId[i]);
temp.setText(null);
}
}
});
}https://stackoverflow.com/questions/7013228
复制相似问题