2009-12-17 8 views
4

관리되는 대화 상자를 사용하려고합니다.올바른 방법으로 대화 상자를 닫으십시오.

처음으로 표시 한 후 후속 제작물이 실제로 대화 상자의 새 인스턴스를 만들지 않고 첫 번째 대화 상자를 다시 사용하는 것으로 나타났습니다. 나는 그만, 모든 통화 instance 새로운 브랜드를 얻고 싶다면

이는

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case MY_DIALOG_ID: 
      MyDlg dlg = new MyDlg(this); 
      dlg.setOnDismissListener(new OnDismissListener() { 
       public void onDismiss(DialogInterface dialog) { 
        removeDialog(MY_DIALOG_ID); 
       } 
      }); 
      return dlg; 
    } 
    return null; 
} 

그래서 나는 removeDialog() 호출이 트릭을 수행 추측? : 옳은 방법이지만, 내 onDismiss() 핸들러는 살해되는 대화 상자의 모든 인스턴스에서 호출되어야합니다 (예 : Dialog.cancel(), Dialog.dismiss(),이 뒤로 키를 치는 것과 같은)?

답변

3

눈치 챘 겠지만 onCreateDialog() 메서드는 처음 대화 상자를 표시 할 때만 호출됩니다. 그것은 대화를 구성하는 책임이 있습니다. 사실, 대화를 표시 할 때마다 onCreateDialog를 호출하도록 대화 상자를 "파괴"할 필요가 없습니다. onPrepareDialog (int, Dialog)를 재정의 할 수 있습니다.이 대화 상자는 대화 상자가 표시되기 직전에 호출됩니다. (이전 onCreateDialog 호출에서 생성 된 대화 상자를 재생할 수 있습니다.) "대화 상자의 속성을 열 때마다이 메서드를 정의하려면이 메서드를 정의하십시오."
감사합니다!

관련 문제