Các tài liệu nói điều này đối với phương pháp dismiss()
từ lớp Dialog
:Cách loại bỏ một DialogFragment chính xác?
Dismiss this dialog, removing it from the screen. This method can be invoked safely from any thread. Note that you should not override this method to do cleanup when the dialog is dismissed, instead implement that in onStop().
Trong mã của tôi, tất cả tôi làm là gọi getDialog().dismiss()
để bỏ qua nó. Nhưng tôi không làm bất cứ điều gì khác hoặc thậm chí sử dụng onStop()
. Vì vậy, tôi hỏi chính xác cách loại bỏ một cách chính xác DialogFragment
để tránh rò rỉ bộ nhớ, vv ..
Thật không may điều này gây ra Hoạt động có chứa của tôi để kết thúc ... –
@ScootrNova: Nó không nên, bạn có thể có một lỗi ở nơi khác. Bạn tạo ra phân đoạn như thế nào? – Heinzi
'protected void showDialogFragment (final DialogFragment fragment) {final FragmentTransaction fTransaction = getSupportFragmentManager(). StartsTransaction(); fTransaction.addToBackStack (null); fragment.show (fTransaction, "dialog");} ' Xin lỗi vì một lớp lót khó chịu! Nhưng yeah bạn có thể đúng, vì vậy trong thời gian này tôi đã viết lên một cách khác để đóng DialogFragments của tôi. Cách mà tôi đã loại bỏ chúng bằng cách sử dụng phương thức dismiss() chỉ là tìm phân đoạn bằng thẻ và sau đó chạy bỏ qua() trên thẻ nếu nó không phải là rỗng. Ồ, vâng, tôi đang "mới" chia mảnh ngay trước khi chuyển nó cho phương pháp đó. –