2012-08-28 6 views
1

.dismiss()이 있는데도 내 DialogButton이 닫히지 않습니다. 내 코드 :Android DialogButton이 닫히지 않음

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.iabout); 
    // custom dialog 
    final Dialog dialog = new Dialog(context); 
    dialog.setContentView(R.layout.iabout); 


    dialogButton = (Button) dialog.findViewById(R.id.btAboutOK); 
    // if button is clicked, close the custom dialog 
    dialogButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
} 

감사합니다.

+3

어디 당신이 dialog.show() 메서드를 호출합니까? – grattmandu03

답변

2

사용 대화의 해달라고하십시오 뒤로 버튼을 사용하여 해제 할 수 있도록 setCancelable(true)을 추가 할 수 있습니다, DialogFragments을 사용하십시오. 더 쉽게 유지할 수 있습니다. 그래서 같은 onCreateDialog(Bdl bundle)에 사용하여 DialogFragment 클래스에서 다음

AlertDialog.Builder을 (사전에 벌집를 들어 프로젝트에 지원 라이브러리를 추가) :

public class MyDialogFragment extends DialogFragment { 


@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    return new AlertDialog.Builder(getActivity()) 
      .setIcon(R.drawable.alert_dialog_icon) 
      .setTitle(R.string.alert_dialog_custom_title) 
      .setPositiveButton(android.R.string.ok, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         ((MyActivity)getActivity()).doPositiveClick(); 
        } 
       } 
      ) 
      .setNegativeButton(android.R.string.cancel, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         ((MyActivity)getActivity()).doNegativeClick(); 
        } 
       } 
      ) 
      .create(); 
} 

} 

이러한 예는 찾을 수 있습니다 here.

대화를 사용하는 오래된 방법을 사용하려는 경우 임대 계약서에서 최소한 dialog builder을 사용하십시오.

위 예제에 따라 콜백 메소드를 설정할 수 있습니다.

하면 사용자 정의 레이아웃을 사용자 정의 대화 상자를 수행 할 경우

, 사용 DialogFragment들, 당신은 제대로 대화 상자의 라이프 사이클을 제어 할 수 있습니다 다음 사용자 정의 버튼을 그냥 DialogFragmentdismiss()를 호출 할 수 있습니다.

이 같은 예제를 자세히 언급 here.

건배, 크리스

0

이 답변에 따르면 https://stackoverflow.com/a/3378859/975959은 대화 상자를 onCreate() 방법으로 배치했기 때문에 문제가 발생한 것일 수 있습니다.

이 대답은 방향 변경 문제에 관한이지만, 자신의 대답을 고려하는 goot 될 수 있지만 : 가

@Override 
onPostCreate() 

방법 대화 상자 구현을 이동. 희망이 도움이됩니다.

또한 당신이 당신의 대화가

관련 문제