7

Tôi có một Phân đoạn lồng nhau mà tôi đang cố khôi phục trạng thái được đưa ra một thay đổi định hướng.Không thể lưu và khôi phục Phân đoạn lồng nhau?

Vì vậy, trước hết là thiết lập của tôi là như sau:

Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment 

Trong đoạn Child của tôi Tôi có đoạn code onSaveInstance như sau:

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    // Serialize the current dropdown position. 
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar() 
      .getSelectedNavigationIndex()); 
} 

Tuy nhiên khi tôi định hướng các thiết bị trong tất cả các sự kiện Vòng đời trở lại trạng thái savedInstance của null.

Tôi có thực hiện điều này không chính xác cho ChildFragment không? Tại sao tiểu bang của tôi không được cứu và trả lại?

Trả lời

7

Đó là do setRetainInstance(true) của đoạn gốc của bạn. Android giữ lại một mảnh với tất cả các mảnh con của nó. Vì vậy, ChildFragment của bạn không bị phá hủy, và đó là lý do tại sao bạn nhận được null trong savedInstanceState. Các tài liệu của onCreateView trạng thái:

savedInstanceState Nếu không null, đoạn này đang được tái xây dựng từ một trạng thái đã lưu trước khi đưa ra ở đây.

Bạn có thể thử nhận xét setRetainInstance(true) và đảm bảo bạn nhận được giá trị chính xác cho savedInstanceState.

+0

Giải pháp này có phù hợp với bạn không? –

+0

Có, nhưng hai năm trước. :) Có lẽ một cái gì đó đã thay đổi kể từ đó. – Ayzen

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