2012-03-01 30 views
26

Tôi muốn biết cách giải quyết vấn đề tôi gặp phải.Làm cách nào để kích hoạt sự kiện khi nhấp chuột xảy ra bên ngoài hộp thoại

Tôi có Hộp thoại bật lên trong một hoạt động. Hộp thoại không che toàn bộ màn hình, vì vậy các nút từ hoạt động vẫn hiển thị. Tôi có thể dễ dàng đóng hộp thoại khi có một liên lạc bên ngoài giới hạn của hộp thoại với dialog.setCanceledOnTouchOutside(true);

Tuy nhiên, điều tôi muốn làm là kích hoạt sự kiện nếu nhấp vào bên ngoài phạm vi của hộp thoại (ví dụ: nếu ai đó chạm vào nút trên Hoạt động chính , nó sẽ đóng hộp thoại và kích hoạt sự kiện đó cùng một lúc).

+1

Giải pháp thông thường là tạo phương thức hộp thoại. Tại sao bạn không muốn làm điều đó? –

+0

Cảm ơn. Tôi đang cố gắng để hiển thị một webview (trong hộp thoại) trong hoạt động chính của tôi để nó duy trì giao diện của ứng dụng. – fizo07

Trả lời

40

Khi dialog.setCanceledOnTouchOutside(true); sau đó bạn chỉ ghi đè onCancel() như thế này:

dialog.setOnCancelListener(
     new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialog) { 
       //When you touch outside of dialog bounds, 
       //the dialog gets canceled and this method executes. 
      } 
     } 
); 

Gõ mã của bạn bên trong phương pháp onCancel() vì vậy nó chạy khi hộp thoại bị hủy.

+0

câu trả lời hay nhất .. sau 2 năm cũng tham khảo câu trả lời tương tự ... không thể upvote nữa :) –

+0

OVERRIDING Dialog.onCancel (...) hoạt động, nhưng dialog.setOnCancelListener (. ..) đã không làm việc cho tôi. – user1269737

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