我有一个简单的计算器,它有六个EditText视图,用户可以输入数字来执行简单的数学运算。此应用程序将满足重复性任务,其中用户将输入信息,按下提交按钮并且答案显示在单独的textView中。
我想添加一个简单的“清除”按钮,它将重置表单,以便用户可以开始新的计算,EditText视图将再次显示用户输入的提示。
是否有'重置'类型函数可以清除所有表单数据并重新加载提示,还是我必须杀死应用程序并重新启动它?如果是这样,那么如何做到这一点是一个很好的起点?
谢谢!
答案 0 :(得分:2)
执行此操作的最基本方法是简单地重置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"
}
答案 1 :(得分:1)
不,你必须自己实施。我建议你创建一个int数组,其中包含你要重置的所有EditTexts
的ID(R.id.xyz
)。然后为数组中的每个EditTexts创建一个循环到.setText()
,每次要清除字段时都可以调用它。类似的东西:
private void resetFields() {
EditText temp;
for (int i = 0; i < myEditTexts.length; i++) {
temp = (EditText) findViewById(textViews[i]);
temp.setText("");
}
}
答案 2 :(得分:1)
我的回答只是一种更好的方法,但它仍然是一种硬代码。任何人都可以找到更快的方式,请分享。
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);
}
}
});
}