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?
5
A
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!
Các vấn đề liên quan
- 1. Tại sao truyền hai đối số chuỗi hiệu quả hơn một đối số danh sách
- 2. Truyền một biến làm đối số mẫu
- 3. Tại sao các đối số lambda được truyền bởi giá trị chỉ đọc trong C++ 11?
- 4. Tại sao == đúng đối với một số đối tượng Integer?
- 5. Truyền đối số cho một IIFE
- 6. truyền đối số cho một hàm trong một vector đơn
- 7. Tại sao tôi không thể truyền một đối tượng sang float trong PHP?
- 8. Tại sao không truyền?
- 9. Tại sao tôi không thể truyền mảng liên tục làm đối số?
- 10. lý do tại sao sao chép constructor gọi khi chúng ta truyền đối tượng như một đối số theo giá trị cho một phương thức
- 11. Truyền tham số từ bootstrapper tới gói gói msi
- 12. Truyền mảng đối số trong dòng lệnh
- 13. truyền hàm làm đối số trong hàm
- 14. Tại sao nên bật() tham gia một đối số?
- 15. Tại sao PHP không ném lỗi khi tôi truyền quá nhiều tham số cho một hàm?
- 16. Tại sao truyền tới giao diện?
- 17. Tại sao Convert.ChangeType lại lấy một tham số đối tượng?
- 18. Mẫu lệnh - tại sao lại đóng gói trong một đối tượng
- 19. Tại sao áp dụng() ở đây chỉ có một đối số thay vì hai đối số?
- 20. Truyền đối tượng ẩn danh làm đối số trong C#
- 21. Truyền đối tượng làm đối số trong Resque-Worker
- 22. Tại sao đối số của hàm không phản đối một mảng trong Javascript?
- 23. Tại sao BinaryFormatter cố gắng truyền một đối tượng kiểu được đánh dấu [Serializable] thành IConvertible?
- 24. Tại sao một số chức năng trong stdio có luồng như đối số cuối cùng?
- 25. Tại sao VectorBuilder trong gói scala.collections.immutable?
- 26. Truyền một mảng làm đối số hàm từ bên trong một hàm lấy nó làm đối số trong C
- 27. truyền đối số cho java qua ant
- 28. Tại sao truyền null cho một kết quả phương thức params trong một mảng tham số null?
- 29. Tại sao ParameterizedThreadStart chỉ cho phép tham số đối tượng?
- 30. Tại sao 0L không bằng 0 khi truyền tới một đối tượng?
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'. –
@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. –