如何在循环片段操作中保存数据?

时间:2017-10-10 09:46:52

标签: java android android-fragments fragment

我在活动中有三个片段(A,B,C)。片段A导致B,片段B导致C. 在Fragment C中,用户有两个选项。他可以回到片段A,也可以摧毁整个活动。 如果他选择返回片段A,我希望将当前数据集保存在片段C的列表中,然后重复相同的循环。但是当他下次到达片段C时,我希望将当前数据添加到该列表中。

如何使用onPause()和onResume()实现此目的?如果有更好的方法,请告诉我。我无法存储在共享首选项中,因为数据将是对象的ArrayList。

如果有人能告诉我如何在代码中实现这一点的基本结构,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

选项1

您需要在Fragment和Activity之间实现通信。 Activity使对象保留所有信息,Fragment在恢复时获取对象,并在必要时更新它。

以下是the official documentation

的示例
public class HeadlinesFragment extends ListFragment {
    OnHeadlineSelectedListener mCallback;

    // Container Activity must implement this interface
    public interface OnHeadlineSelectedListener {
        public void onArticleSelected(int position);
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        // This makes sure that the container activity has implemented
        // the callback interface. If not, it throws an exception
        try {
            mCallback = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnHeadlineSelectedListener");
        }
    }

    ...
}

然后在onResume()上片段调用mCallback.getObject()来获取信息。然后更新对象。

选项2

另一种选择是创建一个外部管理器类,它将保留所有片段将访问的数据。它可能是一个单身人士,但在活动被销毁时需要销毁它