Android表单重置?

时间:2011-08-10 15:15:07

标签: android

我有一个简单的计算器,它有六个EditText视图,用户可以输入数字来执行简单的数学运算。此应用程序将满足重复性任务,其中用户将输入信息,按下提交按钮并且答案显示在单独的textView中。

我想添加一个简单的“清除”按钮,它将重置表单,以便用户可以开始新的计算,EditText视图将再次显示用户输入的提示。

是否有'重置'类型函数可以清除所有表单数据并重新加载提示,还是我必须杀死应用程序并重新启动它?如果是这样,那么如何做到这一点是一个很好的起点?

谢谢!

3 个答案:

答案 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);
            }
        }
    });
}