14

我正在使用操作栏和片段构建选项卡界面。我需要帮助将数据从容器活动发送到片段。

详细地说,我在容器活动中有工作对象。我根据工作对象中的信息(如公司详细信息、经验详细信息等)创建了几个选项卡。我需要将作业对象传递给这些片段,以便它可以显示相应的信息。

我创建了容器活动和选项卡片段。我需要一个关于如何在它们之间传递对象的示例。我不能使用intent.putExtra。我可以从片段访问父容器的对象吗?

任何帮助将不胜感激。

谢谢。

4

2 回答 2

50

在您的活动中创建方法,例如getJob将返回Job对象及其信息

MyActivity extends Activity{
Job mJob;

public Job getJob(){
   return this.mJob;
 }
}

然后在你的片段中你这样做:

MyFragment extends Fragment{

@Override
public void onActivityCreated(){
  super.onActivityCreated();
  ((MyActivity)this.getActivity()).getJob();
 }
}

使用getActivitygetJob();获取对象的方法

于 2012-12-07T08:41:15.703 回答
2

有多种方法可以实现这一目标。

  1. 制作一个static变量来保存您的数据并从片段内部访问该数据 - 这是最快的,但如果使用不当会产生不良的设计模式。
  2. Fragment-to-Fragment communication possible through the parent Activity此处发布了一种方法:http: //developer.android.com/training/basics/fragments/communicating.html您可以使用示例代码来做一个Activity - Fragment data send.
  3. 这里投票最多的答案:访问父活动的实例?提到a way to avoid using static data(1.) 并包含使用的源代码示例ActivityGroup

“如果您需要访问 First 活动中的某些值而不对其进行静态引用,您可以考虑将您的活动放在 ActivityGroup 中。”

您选择的是您的喜好,这些只是几个选项!


编辑:我不确定数字 3 是否适用于片段,因为我还没有测试过类似的方法,例如 Activity - Activity 通信。

于 2012-12-07T08:48:52.413 回答