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

dialog창의 라디오 버튼 클릭->확인하면 이벤트 발생시키는 구현에 에러가 뜹니다

0 추천
라디오 버튼 예제를 따라한 뒤 dialog 내에서 라디오 버튼을 적용시키는 법을 시도했는데 에러가 떴습니다

 

http://androiddeveloper.tistory.com/58 에서 라디오 버튼 예제를 찾아서 제 코드에 적용시키려고 했습니다 

 

제 코드 중에 텍스트 뷰를 클릭하면 dialog가 뜨고 내용 작성 후 확인을 누르는 코드가 있습니다 

 

dialog의 xml 중 라디오 버튼을 두어 해당 라디오 버튼 클릭 시 이벤트가 나타나게끔 하고 싶은데 두 코드를 짜집기할 때 에러가 뜨더군요

 

----------------------------------

밑에는 저의 dialog 관련 코드 일부입니다

 

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.day_time);
  setTitle("일간 계획표(시간)");

 

//day3_2(과목)
    //텍스트 뷰 클릭 시 이벤트 처리
    day3_2.setOnClickListener(new View.OnClickListener(){
     public void onClick(View v){
      day3_2.setBackgroundColor(Color.RED);//텍스트 뷰 배경 색깔 빨간색으로 변경
      dialogView=(View)View.inflate(Day_time.this, R.layout.week_subject, null);
      dlgEdtSubject3_2=(EditText)dialogView.findViewById(R.id.dlgEdt3); //editText를 나타낸다 
      dlgEdtSubject3_2.setText(day3_2.getText().toString()); //day2_2이란 텍스트 뷰에 글자를 출력한다
      AlertDialog.Builder dlg=new AlertDialog.Builder(Day_time.this);
      dlg.setTitle("내용 작성"); //다이얼로그의 제목
      dlg.setIcon(R.drawable.ic_launcher); //다이얼로그 옆의 안드로보이 이미지
      dlg.setView(dialogView); //다이얼로그를 띄운다
      
      dlg.setPositiveButton("확인",
          new DialogInterface.OnClickListener(){
         public void onClick(DialogInterface dialog,int which){           
           //과목(분량) 저장(프레퍼런스 사용)       
          pref = getSharedPreferences("day_all" , MODE_PRIVATE);   
          SharedPreferences.Editor editor = pref.edit();    
          editor.putString("day3_2", dlgEdtSubject3_2.getText().toString());          
          editor.commit();   
          day3_2.setText(dlgEdtSubject3_2.getText().toString()); //day_L2_1이란 텍스트 뷰에 글자를 출력한다     
          day3_2.setBackgroundColor(Color.WHITE); //텍스트 뷰 배경 색깔 흰색으로 변경       
         }
        });    
        dlg.setNegativeButton("취소",
          new DialogInterface.OnClickListener(){
         public void onClick(DialogInterface dialog,int which){        
          day3_2.setBackgroundColor(Color.WHITE);
         }
        });     
        dlg.show();   
     }   
    });   

}

----------------


여기서 링크 건 사이트의 코드 중 

 

rg1.setOnCheckedChangeListener(this); 는 onCreate() 내에서는 에러가 안 뜨지만 이를 dialog의 확인 버튼을 눌렀을 때 이벤

 

트가 발생시키도록 하기 위해 확인의 DialogInterface.OnClickListener(){}안에 집어넣으면 에러가 뜨더군요

 

라디어 그룹 타입의 체크체인지리스너는 다이얼로그인터페이스 온클릭리스너에 적용되지 않는다는 식이었습니다

 

그렇다면 dialog 에서 라디오 버튼 이벤트는 불가능한건가요? 아니면 다른 방법이 있나요? 

 

익명사용자 님이 2014년 6월 2일 질문

1개의 답변

+1 추천
음~~! 요고이 우예 설명 하누???

설명이긴데???

일단 setOnCheckedChangeListener요놈을 왜 다이얼로그 이벤트에 넣어야 하는지????

필요가 읍는데..... 게다가 논리적으로도 맞지가 않아요~~!

다잉얼로그 이벤트와 라디오 버튼의 이벤트가 동시에 이루어 질일이 ㅇ없거등요~~!

그리고 해당 함수를 질문하신데로 넣으면 에러가 나는 이유는 this때문입니다~~!

설명이 기므로 요점만.... create에서의 this는 해당 엑티비티 자신입니다.

하지만 다잉얼로그의 인터페이스 상에 들어가게 되면 this는 DialogInterface입니다~!

인자가 다르니 당연히 에러가 날수 밖에요.... 이렇게 되는 이유는 공부해보세요~~!

이제 실지 답변을 하자면 다이얼로그에 뷰를 추가 하셨습니다~!

뷰는 어떻게 추가 하셨나요? 선언 하고 초기화 하시고 setview로 추가 하셨습니다~!

라디오 버튼도 똑같 이하면 됩니다~!

님의 올리 소스로 예를 들자면

RadioButton rbt = (RadioButton) dialogView.findViewById(R.id.radioButton1);

이렇게 초기화 하시고 버튼을 눌렀을때 해당 라디오 버튼이 체크된놈을 찾아 사용하시면 되겠죠?
ThisPlus (46,920 포인트) 님이 2014년 6월 3일 답변
...