Tôi biết về mẫu "newInstance" (Best practice for instantiating a new Android Fragment). Nhưng làm thế nào để tôi cập nhật các đối số của một mảnh ví dụ nếu một đoạn khác thay đổi dữ liệu?Thực tiễn tốt nhất để cập nhật đối số của một đoạn?
Tôi biết về các phương thức gọi lại giữa các Phân đoạn/Hoạt động, nhưng các cuộc gọi lại này sẽ không cập nhật các đối số ?!
Ví dụ: khi tạo đoạn mã, tôi chuyển URI cho nó bằng gói. Sau đó, một đoạn khác thay đổi URI này bằng cách gọi phương thức changeUri (Uri uri) trên đoạn đầu tiên. Nếu sau đó đoạn được tạo lại (ví dụ do xoay màn hình), nó sẽ sử dụng URI đầu tiên từ gói đối số thay vì uri cập nhật sau, đúng không?
Cách tốt nhất để giải quyết vấn đề này là gì? Tôi có phải lưu trữ thủ công nó trong savedInstanceState và về cách sử dụng quyết định có sử dụng instanceState hoặc các đối số-bundle không?
Tôi đang tìm kiếm một cách tiêu chuẩn xử lý các đối số của các mảnh vỡ của tôi, vì vậy tôi nghĩ rằng tôi sẽ có một cách tiếp cận như vậy (pseudo-code):
private Uri arg1;
public static Fragment newInstance(Uri arg1) {
create bundle
create fragment instance
set bundle to fragment
return fragment
}
private void onCreate(Bundle savedInstance) {
if(savedInstance != null) {
arg1 = savedInstance.uri
}
}
private Uri getUri() {
if(arg1 == null) {
arg1 = getArguments.uri
}
if(arg1 == null) {
arg1 = defaultValue
}
}
Vì vậy, tôi có một cách đơn giản nhất cách để truy cập đối số của tôi. Và không cần phải sử dụng if-else-hassle, mỗi khi tôi cần lập luận đó.
Bạn nghĩ sao về điều này?
Có. Có bao nhiêu mã đang nói về? Phương thức oveeriden -'onSaveInstanceState'- với 1 dòng phụ và câu lệnh if-else trong 'onCreate'? – gunar
thất bại thiết kế các mảnh vỡ không nên phụ thuộc vào các mảnh khác – danny117
Điều gì về để 'viết lại' các đối số trong một phương pháp công cộng của đoạn đó? –