2012-05-04 3 views
4
AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
ListDialog.setPositiveButton(R.string.str_choose, new YesListener()); 
ListDialog.setNegativeButton(R.string.str_cancel, new NoListener()); 
dialog.show(); 

위의 코드는 내 것입니다.
버튼을 클릭하여 대화 상자를 닫을 수 있습니다.
하지만 버튼을 클릭하지 않고 닫으려고하면.
어떻게해야합니까?단추를 클릭하지 않고 AlertDialog.Builder를 닫는 방법

+0

AlertDialog.Builder에는 cancel() 및 dismiss() 기능이 없습니다. – brian

+0

하지만 대화의 ID는 무엇입니까? – brian

+0

당신은 [Dialogs] (http://developer.android.com/guide/topics/ui/dialogs.html)를 읽어야 만 대화 상자를 생성, 표시, 제거 및 해제하는 여러 방법을보아야합니다. – yorkw

답변

4

Dialog.dismiss()에 전화를 지연 핸들러를 사용합니다. 여기에 예제가 있습니다.

Activity에서 해당 인스턴스 변수를 정의

// number of milliseconds to wait (2 seconds, in this example). 
public static final int DELAYED_RESPONSE = 2000; 
// define a handler as a private instance variable in your Activity. 
private Handler handler = new Handler(); 

사용 DELAYED_REPONSE 밀리 초 후 대화 상자를 닫습니다하는 새로운 Runnable 게시하려면 다음 코드 :이 코드는 가정합니다

handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     dismissDialog(); 
    } 
}, DELAYED_RESPONSE); 

ActivitydismissDialog() 메서드를 구현하므로 이에 따라 대화 상자가 닫힙니다.

2

할 수있는 가장 좋은 방법은 루퍼 당신의 UI 스레드에 Handler을 생성하는 다음 게시 할 것입니다 지연 Message 또는 Dialog.dismiss()을 실행 Runnable.

0

장치의 뒤로 버튼을 누르면 설정 setCancelable(true)을 사용할 수 있습니다. 예 :

AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
dialog.setCancelable(true).show(); 
+0

내 코드에서 dismiss를 호출하려고합니다. 아무것도 클릭하지 않고. – brian

+0

특정 요구 사항을 충족하는 경우? 기각 되니? –

관련 문제