này là dành cho các cấp API 10 và dưới đây:
Trước tiên, bạn nên ghi đè onCreateDialog (int id, args Bundle) trong lớp Hoạt động, đó là những gì bạn đang làm? Các hộp thoại luôn được tạo và hiển thị như một phần của Hoạt động. Thứ hai, tôi không nghĩ rằng bạn có thể hủy bỏ/bỏ qua một hộp thoại trong onCreateDialog vì nó chưa thực sự được tạo khi onCreateDialog được gọi. Đó là, bạn không thể hủy bỏ/loại bỏ một cái gì đó mà chưa được tạo ra. Những gì bạn có thể thử là để ghi đè lên onPrepareDialog() thay vào đó và làm kiểm tra của bạn để hủy bỏ/bỏ qua hộp thoại ở đó. Tại thời điểm đó hộp thoại thực sự đã được tạo ra (chỉ cần không được hiển thị), vì vậy bạn sẽ có thể ngăn chặn nó được hiển thị nếu bạn gọi hủy bỏ/bỏ qua ở đó.
onPrepareDialog() là nơi thích hợp để thực hiện bất kỳ loại séc và quyết định nào trên hộp thoại sắp được hiển thị. Đây là các API trước Honeycomb.
Điều này dành cho API 11 trở lên:
Nếu bạn đang sử dụng API sau này, bạn nên mở rộng DialogFragment để thay thế. Trong trường hợp này, tôi nghĩ bạn có thể xử lý việc ra quyết định trong phương thức onCreateView() của DialogFragment tương tự như onPrepareDialog().
Tôi hy vọng bạn đã đọc qua này: http://developer.android.com/guide/topics/ui/dialogs.html
hoặc này, tùy thuộc vào API của bạn:
http://developer.android.com/reference/android/app/DialogFragment.html
Nhìn chung, có lẽ là một giải pháp sạch hơn là để vô hiệu hóa các nút hoặc cơ chế khiến hộp thoại hiển thị ở vị trí đầu tiên? Tức là, bạn viết mã như vậy mà Dialog.show() được gọi chỉ khi nó thực sự cần phải được gọi. Tôi phải biết thêm chi tiết về chính xác những gì bạn đang cố gắng làm. Ví dụ, giả sử bạn gọi Dialog.show() từ nút onClickListener của một nút. bạn không thực sự muốn người dùng nhấn một nút, mong đợi một hộp thoại, nhưng có nó không hiển thị do một số lý do người dùng không hiểu. Một giải pháp tốt hơn là để vô hiệu hóa tất cả các nút với nhau để nó rõ ràng cho người dùng rằng chức năng này không có sẵn do một cái gì đó khác trong ứng dụng.
Nguồn
2012-07-31 16:26:04
Bạn có đang gọi super.onCreate() trong phương thức onCreate() của mình không ?? – RaphMclee
Bạn đang viết cấp độ API nào? –