2011-08-10 12 views
1

私は簡単な数学関数を実行するために数字を入力する6つの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)。次に、配列から各EditTextへのループを.setText()に作成します。これは、フィールドをクリアするたびに呼び出すことができます。次のようなものがあります。

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); 
      } 
     } 
    }); 
} 
関連する問題