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

问题描述:

我在活动中有三个片段(A,B,C)。片段A导致B和片段B导致C. 在片段C中,用户有两个选项。他可以回到片段A,也可以摧毁整个活动。 如果他选择回到片段A,我希望将当前的一组数据保存在片段C的列表中,然后重复相同的循环。但是,当他下一次我要将当前数据添加到该列表中时,它会到达C片段。我如何使用onPause()和onResume()来实现这个功能?如果有更好的方法,请让我知道。我无法存储共享首选项,因为数据将是对象的ArrayList。如何在循环片段操作中保存数据?

如果有人能向我展示我们如何在代码中实现这一功能的基本结构,我将不胜感激。

+0

您可以将数据保存到共享首选项中。 –

+0

https://*.com/questions/23024831/android-shared-preferences-example –

+0

我不建议使用共享首选项,因为它们的目的是在应用程序被终止时保持数据,而不是传递数据活动/片段。还有其他方法。 – Eselfar

选项1

您需要实现的片段和活动之间的通信。 活动使对象保留所有信息,并且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

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