我在一个活动中有三个片段(A,B,C)。片段 A 导致 B,片段 B 导致 C。在片段 C 中,用户有两个选项。他可以回到碎片A,也可以摧毁整个活动。如果他选择回到片段A,我希望将当前数据集保存在片段C的列表中,然后重复相同的循环。但是,当他下次到达片段 C 时,我希望将当前数据添加到该列表中。
如何使用 onPause() 和 onResume() 实现这一点?如果有更好的方法,请告诉我。我无法存储在共享首选项中,因为数据将是对象的 ArrayList。
如果有人能向我展示我们如何在代码中实现它的基本结构,我将不胜感激。
选项 1
您需要在片段和活动之间实现通信。活动保留包含所有信息的对象,片段在恢复时获取对象,并在必要时更新它。
这是官方文档的示例
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
另一种选择是创建一个外部管理器类,该类将保留所有片段访问的数据。它可能是一个单例,但在销毁活动时需要销毁