2012-02-18 8 views
0

ダイアログレイアウトでは、ユーザーの選択に応じて2番目のEditTextをプログラムで作成します。入力を返すときは、2番目のEditTextが作成されたかどうかを知る必要があります。そして私はこのチェックをする方法を理解していません。私のステートメントif(edittextTwo!= null)は、2番目のEditTextが表示され、テキストを入力した場合でも常にnullです。EditTextが作成されているかどうか調べるには?

ここ

が第二のEditTextを作成し、その入力を返すメソッドです:

(!edittextTwo = null)の場合

private void displayASecondEdittext(String title) { 
    ViewGroup layout = (ViewGroup) findViewById(R.id.layout_editdialog); 
    TextView titleTwo = new TextView(this); 
    titleTwo.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    titleTwo.setText(title); 
    layout.addView(titleTwo); 

    EditText edittextTwo = new EditText(this); 
    edittextTwo.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    layout.addView(edittextTwo); 
}//END displayASecondInputfield 


private void returnResult() { 
    Intent resultIntent = new Intent(this, EditDialog.class); 
    resultIntent.putExtra(EDITONE, edittextOne.getText().toString()); 
    if (edittextTwo != null) { 
     resultIntent.putExtra(EDITTWO, edittextTwo.getText().toString()); 
     Log.v(TAG, "edittextTwo ="+edittextTwo.getText().toString()); 
    } 
    setResult(Activity.RESULT_OK, resultIntent); 
    finish(); 
}//END returnResult 

答えて

1

EditText edittextTwo;あなたのメソッドの外側に移動します。ここにそれを置く:

public class myActivity extends Activity 
    EditText edittextTwo = null; 

そして、あなたのDisplayASecondEditText()で、代わりにあなたが持っているものの次の操作を行います。

edittextTwo = new EditText(this); 

これはあなたの宣言はグローバルに、そしてすべてのすべてのメソッドは、変数にアクセスできるようになります。

+0

ああ、はい。スコープは初心者にとっては難しいです。ありがとう! – Tombola

1

私はedittextTwo以来、どのようにしてもコンパイル上記のコードを理解していませんdisplayASecondEdittextのローカル変数です。それをあなたの活動のメンバー変数にすると、それはうまくいくはずです。

関連する問題