마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AlertDialog의 Message 변경 방법을 모르겠습니다.

0 추천

처음에는 커스텀 다이얼로그를 쓰지 않고 기본 형식으로 하여서

 

텍스트를 setMessage로 표시하고, 다이얼로그 버튼의 리스너에서 다시 setMessage를 사용하는 방법을 썼습니다.

final String memo = readTextfile("/memo.txt", false);
   alert = new AlertDialog.Builder(this)
     .setTitle("메모 보기")
     .setMessage(memo)
     .setPositiveButton("닫기",
       new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog,
          int which) {
        }
       })
     .setNegativeButton("메모 복호화",
       new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog,
          int which) {
         alert.setMessage(SEEDDEC(memo));
        }
       });
   alert.show();

그러나 이 방식을 사용하게 되면, 메모 복호화 버튼이 동작하지 않습니다(그냥 다이얼로그가 닫힙니다).

 

두번째 생각한 방법은 커스텀 다이얼로그를 이용하여 버튼에 커스텀 다이얼로그의 레이아웃 안의 텍스트뷰에 setText를 쓰는 방법이었는데요,

 

이 방법의 경우 다이얼로그가 show되었을때 텍스트뷰의 내용을 수정하는 방법을 모르겠습니다.

 

아래처럼 코드를 썼을때는 alert.show();위의 setText에서 에러가 났구요

final String memo = readTextfile("/memo.txt", false);
   final LinearLayout linear = (LinearLayout) View.inflate(this,
     R.layout.dialog_view_memo, null);
   alert = new AlertDialog.Builder(this)
     .setTitle("메모 보기")
     .setView(linear)
     .setPositiveButton("닫기",
       new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog,
          int which) {
        }
       })
     .setNegativeButton("메모 복호화",
       new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog,
          int which) {
         memoview.setText(SEEDDEC(memo));
        }
       });
   memoview = (TextView) findViewById(R.id.memotext);
   memoview.setText(memo);
   alert.show();

memoview.setText(memo);를 삭제해도 복호화 버튼 리스너의 setText에서 에러가 납니다.

 

고수분들의 도움을 구합니다 ㅜㅜ

 

토모히 (320 포인트) 님이 2014년 1월 9일 질문

1개의 답변

0 추천
클릭 이벤트도 DialogInterface가 제공하는 버튼을 사용하지말고

dialog_view_memo 안에 버튼 만들어서 해당 버튼에 onClick시 이벤트를 작성하시기 바랍니다.

dialogInteface가 제공하는 버튼은 무조건 다이얼로그가 닫히게 되어 있기 때문에, 그렇게는 구현하시기 힘들겁니다.
Gradler (109,780 포인트) 님이 2014년 1월 9일 답변
...