Dialog의 View를 findViewById(...)로 가져올 때 null -_- android

★ findViewById

findViewById 는 다음 두개의 클래스에 구현되어 있다.

http://developer.android.com/reference/android/app/Activity.html

Activity.findViewById()


http://developer.android.com/reference/android/view/View.html

View.findViewById()





Dialog를 동적으로 생성할 때 그것의 내부 뷰들은 부모 Activity의 root에 속하지 않으므로


Activity내에서  findViewById()를 호출하면 Activity.findViewById가 호출되고 그래서


Null이 반환되는 것 같다.


고로 View.findViewById()를 호출해야한다.



☆ 코드

final LinearLayout rootLayoutForDialog = (LinearLayout)View.inflate(BoardAccessor.this, R.layout.layout_dialog, null);
new AlertDialog.Builder(BoardAccessor.this)
    .setTitle("단어장 추가")
    .setIcon(android.R.drawable.btn_plus)
    .setView(rootLayout)
    .setPositiveButton("확인", new DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
      EditText editTextWordsName;
      EditText editTextWordsComment;
      editTextWordsName = (EditText)rootLayoutForDialog.findViewById(R.id.edittext_wordname);
      editTextWordsComment = (EditText)rootLayoutForDialog.findViewById(R.id.edittext_wordcomment);
      SQLiteDatabase db = dicDBH.getWritableDatabase();
            ContentValues row = new ContentValues();
            row.put(editTextWordsName.getText().toString(), editTextWordsComment.getText().toString());
            db.insert("dic", null, row);
            dicDBH.close();
     }
    })
    .setNegativeButton("취소", new DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
      
     }
    })
    .show();


덧글

  • zkh 2015/01/24 18:30 # 삭제 답글

    덕분에 문제해결했네요! 감사합니다
  • zkh 2015/01/24 18:30 # 삭제 답글

    덕분에 문제해결했네요! 감사합니다
  • zkh 2015/01/24 18:30 # 삭제 답글

    덕분에 문제해결했네요! 감사합니다
  • zkh 2015/01/24 18:30 # 삭제 답글

    덕분에 문제해결했네요! 감사합니다
댓글 입력 영역


통계 위젯 (블랙)

45
37
461590