2011-08-10 40 views
1

我有一個簡單的計算器,有六個EditText視圖,其中用戶將輸入數字來執行一個簡單的數學函數。這個應用程序將滿足一個重複的任務,其中用戶將輸入信息,按提交按鈕,答案顯示在一個單獨的textView。Android表單重置?

我想添加一個簡單的'清除'按鈕,它將重置表單,以便用戶可以開始新的計算,並且EditText視圖將再次顯示用於用戶輸入的提示。

是否有'重置'類型的函數,將清除所有的表單數據並重新載入提示,或者我必須殺死應用程序並重新啓動它?如果是這樣,那麼如何做到這一點是一個很好的起點?

謝謝!

回答

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

不,你必須自己去實現它。我建議你用你想要重置的所有EditTexts的ID創建一個int數組(R.id.xyz)。然後創建一個循環到.setText()到數組中的每個EditText,您可以在每次要清除字段時調用該循環。例如:

private void resetFields() { 
    EditText temp; 

     for (int i = 0; i < myEditTexts.length; i++) { 
      temp = (EditText) findViewById(textViews[i]); 
     temp.setText(""); 
    } 
} 
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); 
      } 
     } 
    }); 
}