保留碎片

在许多情况下,通过简单地使用片段重新创建 Activity 时,我们可以避免出现问题。如果你的视图和状态在片段内,我们可以在重新创建活动时轻松保留片段:

public class RetainedFragment extends Fragment {
    // data object we want to retain
    private MyDataObject data;

    // this method is only called once for this fragment
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // retain this fragment when activity is re-initialized
        setRetainInstance(true);
    }

    public void setData(MyDataObject data) {
        this.data = data;
    }

    public MyDataObject getData() {
        return data;
    }
}

这种方法可以防止片段在活动生命周期中被破坏。它们保留在 Fragment Manager 中。有关更多信息, 请参阅 Android 官方文档。

现在,你可以在创建片段之前检查片段是否已经存在,并且片段将在配置更改中保留其状态。有关更多详细信息, 请参阅处理运行时更改指南。