2016-06-27 2 views
0

내 코드는 현재 장치를 회전 할 때 해제해야 할 수도있는 대화 상자를 만듭니다.onDestroy에서 객관식 대화 상자를 닫는 방법

들의 OnDestroy에서
Builder dialog = new AlertDialog.Builder(context); 
     alertDialog = dialog.create(); 
     alertDialog.setMessage("Some Heading"); 
     alertDialog.setButton(alertDialog.BUTTON_POSITIVE, "Some Message", dialogClickListener); 
     alertDialog.setButton(alertDialog.BUTTON_NEGATIVE, "Another Message", dialogClickListener); 

     alertDialog.show(); 

, 나는 다음 대화 상자가 표시되는지 확인하고 그런 경우가 있다면 그것을 파괴 할 수 있습니다 :

if ((alertDialog !=null) && (alertDialog.isShowing())) 
{ 
    alertDialog.dismiss(); 
} 
다음과 같은 특정 대화 상자에 대한 전 세계적인 선언 다음 코드를

위의 내용은 기본 텍스트 및 단추 기반 대화 상자에서 잘 작동하지만 확인란 및 라디오 단추와 같은 여러 선택 항목을 처리하는 대화 상자도 있습니다.

사람들은 현재 설정은 같습니다

AlertDialog.Builder dialogMultipleChoice = new AlertDialog.Builder(this); 

dialogMultipleChoice.setMultiChoiceItems(myList, myCheckedList, new DialogInterface.OnMultiChoiceClickListener(){ 
@Override 
public void onClick(DialogInterface dialog,int which, boolean isChecked) { 
    checkedList[which] = isChecked; 
    }} 
); 

... 등등 .. 여러 선택 대화와

, 나는 내가들의 OnDestroy이 기각 수있는 방법을 볼 수없는, 즉 내가 가진 dialogMultipleChoice.dismiss()를 호출 할 수 없습니다.

참고, dialog.create를 사용할 수 없으므로 setMultiChoiceItems를 호출 할 수 없습니다.

이 문제를 해결하는 데 큰 도움이됩니다. 첫 번째 예에서

답변

0

당신은 빌더를 생성 한 다음 멤버 변수에 builder.create();의 값을 할당됩니다

Builder dialog = new AlertDialog.Builder(context); 
alertDialog = dialog.create(); 

그러나 두 번째 예제에서 당신은 단지 지역 변수 만드는 :

AlertDialog.Builder dialogMultipleChoice = new AlertDialog.Builder(this); 

alertDialog = dialog.create();이 대화 상자를 회원 변수에 할당 한 다음 다른 대화 상자처럼 닫을 수 있습니다.

+0

안녕하세요, Katharina 님, 불행히도 작동하지 않습니다. 내가하지 않았다는 이유는 dialog.create를 사용하면 다중 선택 항목을 할당 할 수 없기 때문입니다. 그 방법에서 지원되지 않으므로 작동하지 않습니다. – greysqrl

+0

빌더에 아이템을 할당 한 후'dialog.create()'를 호출하십시오. – Katharina

0

결국 나는 대화 상자에 .show() 호출의 반환 값을 할당했습니다. 즉, dialog = dialogMultipleChoice.show();

관련 문제