5

Trong ví dụ chính thức http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog đoạn được tạo ra bằng cách sử dụng phương pháp nhà máy tĩnh bao bọc các đối số trong một Gói và gọi hàm tạo không có args truyền args với setArguments (bó) - vì vậy câu hỏi của tôi là - tại sao không đơn giản là tạo hàm dựng công khai những lập luận này? Lý do để sử dụng phương thức của getArguments/setArguments fragment - có lẽ Dialog không được bảo đảm được tái tạo mỗi lần, nhưng được tái sử dụng? nếu vậy thì khi nó xảy ra? Cảm ơn trước.DailogFragment - getArguments/setArguments - tại sao truyền đối số trong một gói?

Trả lời

7

Thực thi không có đối số, mẫu hàm tạo mặc định cho phép hệ thống tạo lại phân đoạn động khi cần thiết. Từ tài liệu:

Tất cả các lớp con của Phân đoạn phải bao gồm hàm tạo công khai trống. Khuôn khổ thường sẽ tái khởi tạo một lớp phân đoạn khi cần thiết, đặc biệt trong quá trình khôi phục trạng thái và cần có khả năng tìm ra hàm tạo này để khởi tạo nó. Nếu hàm tạo rỗng không có sẵn, ngoại lệ thời gian chạy sẽ xảy ra trong một số trường hợp trong quá trình khôi phục trạng thái.

"thường xuyên" và "trong một số trường hợp" khiến nó mơ hồ. Nhưng ngắn đáp ứng sự tò mò của bạn ... đối số nó được!

+1

Một hàm tạo công khai rỗng có thể cùng tồn tại với một hàm tạo công khai tham số. Điều này không giải thích bằng cách sử dụng một phương thức tĩnh (thay vì một hàm tạo) và cũng không bao hàm các đối số trong một đối tượng 'Bundle'. –

+0

@KonradMorawski Bạn nói đúng, điều này nghe có vẻ hợp lý. Tuy nhiên công cụ ADT lint làm nổi bật hàm khởi tạo như bị lỗi. –

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