2012-03-20 2 views
2

나도 알아, 유사한 질문을하고 이미 찾을 수있는 모든 것을 살펴 봤지만, 나는이 문제에 대한 답변을 찾지 못했습니다.AlertDialog없이 사용자 정의 대화 상자에서 취소 버튼을 구현하려면 어떻게해야합니까?

여기에 코드입니다 :

protected Dialog onCreateDialog(int id) 
    { 
     Dialog dialog = new Dialog(this); 
     switch(id) 
     { 
      case R.layout.database_feed: 
       dialog.setContentView(R.layout.database_feed); 
       ((Button) dialog.findViewById(R.id.discard_button)).setOnClickListener(
        new View.OnClickListener() 
        { 
         //@Override 
         public void onClick(View v) 
         { 
          //dialog.cancel(); 
         } 
        } 
       ); 
       break; 
     } 
     return dialog; 
    } 

단순히 R.layout.database_feed 버튼을 클릭에 대화 상자를 닫습니다합니다. 하지만 난 onClick 메서드 내에서 대화에 대한 액세스 권한이 없습니다. 나는 정말로 혼란 스럽다.

AlertDialog 또는 DialogBuilder를 사용하고 싶지 않습니다. 대화 상자에 AlertDialog 또는 기타 구현하기 어려운 다른 항목이 있기 때문에 사용하지 않습니다. 또한 대화 상자를위한 별도의 Activity를 만드는 방법을 이미 알고 있습니다.하지만 실제로 여기에서 시도하는 방식대로 작동하는지 알고 싶습니다. 또한 이미 DialogInterface.OnClickListener() 사용하려고했지만 setOnClickListener (...) - 메서드에서 사용할 수 없습니다.

대화 상자를 취소하는 것은 그렇게 어려운 일은 아니지만 ... 이해가 가지 않습니다.

힌트/도움을 주시면 감사하겠습니다.

들으 그럼 당신은 당신의 onclick() 메소드 대화에 액세스 할 수 있습니다

Dialog dialog = new Dialog(this); 

final Dialog dialog = new Dialog(this); 

답변

4

변경합니다.

+0

완벽합니다. 나는 그것을 몇 시간 동안 찾고 있었다. 감사! – Michi

+2

추가 팁 : 이클립스에서 최종 변수 선언은 익명 클래스 내에서 액세스해야 할 때 기본 자동 고침 액션입니다. – njzk2

2

'대화'를 클래스 변수로 저장하거나 메소드에서 최종 설정하십시오.

관련 문제