2012-01-20 34 views
5

Tôi muốn sử dụng giao diện chất lỏng của AlertDialog.Builder nhưng khi tôi nhận được điểm thêm DismissListener và ShowListener, tôi phải thoát ra và thêm nó vào đối tượng hộp thoại sau khi tạo() trên trình tạo. Có ai biết tại sao họ không ở đó không? Tôi không thể mở rộng nó vì thành viên P tư nhân ... Nó không phải là kết thúc của thế giới hay bất cứ điều gì, tôi chỉ tò mò tại sao nó không có ở đó.Tại sao AlertDialog.Builder không có phương thức setOnDismissListener hoặc setOnShowListener?

Trả lời

1

Từ mức API 17. bạn có thể sử dụng phương pháp setOnDismissListener (DialogInterface.OnDismissListener onDismissListener)

7

Bạn đã thử phương pháp này ..

AlertDialog dlg = builder.create(); 
lg.setOnDismissListener(new DialogInterface.OnDismissListener() { 
@Override 
public void onDismiss(final DialogInterface dialog) { 
//Do some work 
} 
}); 
return dlg; 
+1

Vâng, tôi nói rằng tôi làm add sau .Create của tôi() gọi .. Tôi sẽ thay vì có thể làm: mới AlertDialog.Builder (ctx) .setTitle (tiêu đề) .setMessage (msg) .setPositiveButton (buttonTitle, listener) .setDismissListener (dismissListener) .show() – danb

+1

@danb Bạn làm điều đó sau create() gọi, nhưng trên đối tượng Builder? Điều đó sẽ không hoạt động. create() là cách Builder cung cấp cho bạn một AlertDialog, nhưng chính đối tượng Builder không có bất kỳ phương thức nào để thiết lập các trình lắng nghe trên chúng. – LuxuryMode

+2

Trình xây dựng có một số phương pháp để thiết lập người nghe, không phải là hai phương pháp tôi đề cập. Nó có setOnCancelListener, setOnItemSelectedListener và setOnKeyListener .. Tôi chỉ tò mò tại sao api có vẻ không đầy đủ. – danb

Các vấn đề liên quan