Android:使用putExtra从片段访问容器活动对象?

Android:使用putExtra从片段访问容器活动对象?,android,android-fragments,fragment,android-tabs,Android,Android Fragments,Fragment,Android Tabs,我正在使用操作栏和片段构建一个选项卡界面。我需要帮助将数据从容器活动发送到片段 更详细地说,我在容器activty中有作业对象。我还根据job object中的信息(如公司详细信息、经验详细信息等)创建了几个选项卡。我需要将作业对象传递给这些片段,以便它可以显示相应的信息 我已经创建了容器活动和选项卡片段。我需要一个关于如何在它们之间传递对象的示例。我不能使用intent.putExtra。我可以从片段访问父容器的对象吗 任何帮助都将不胜感激 谢谢。在您的活动中创建方法,例如getJob,该方法

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

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

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

任何帮助都将不胜感激


谢谢。

在您的活动中创建方法,例如
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();
 }
}

使用
getActivity
和方法
getJob()
获取对象有多种方法

  • 创建一个
    static
    变量来保存您的数据并从片段内部访问该数据-这是最快的,但如果使用不当,会创建糟糕的设计模式
  • 这里发布了一种通过父活动进行
    片段到片段通信的方法:您可以使用示例代码只执行
    活动-片段数据发送
  • 这里投票最多的答案是:提到
    一种避免使用静态数据的方法
    (1.),并包含使用
    活动组
    的源代码示例
  • “如果您需要在第一次活动中访问某些值,而无需 做静态参考,你可以考虑把你的 ActivityGroup中的活动。“

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

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

    你检查过吗?@Sandstar在我的回答中包含了你发布的链接。可能是重复的,非常感谢。我可以使用getActivity()访问该对象。@Maid786发布您的代码。我假设您向ona活动中添加了多个片段。然后将父活动类型转换为错误的类型。将所有活动都设置为IPElement某些接口,例如IParentActivity并将getActivity结果类型转换为itIt返回单个对象。我应该如何为多个对象实现这一点?@Machado只需将返回类型更改为Bundle或listThank。我正在使用格林建议的替代方案。如果我卡住了,我会试试你的建议。