从片段访问父活动的数据

Posted

技术标签:

【中文标题】从片段访问父活动的数据【英文标题】:Accessing data of parent activity from a fragment 【发布时间】:2016-12-30 11:50:23 【问题描述】:

从片段访问活动数据成员的最佳方式是什么 我知道的一些方法包括 -

    在 Fragment 中创建一个 Activity 将实现的接口。该接口将具有访问 Activity 数据成员的方法。

    使用片段中的 ((Activity)getActivity).getXXX() 直接访问。

    将数据成员或自定义parcelable类传递给片段的newInstance方法,并将片段参数设置为例如类-

    Bundle args = new Bundle();

    args.putInt("num", num);

    f.setArguments(args);

    稍后我们可以使用 getArguments() 获取参数

哪种方法最好,每种方法的缺点是什么?

【问题讨论】:

【参考方案1】:

其实第一种和第三种方法的结合是最好的。应该不惜一切代价避免第二个,因为这会将 Fragment 强烈耦合到特定的Activity。这将破坏Fragments 的主要优势之一,即能够在不同的Activities 中使用它(即插即用)。

至于第一种和第三种方法。 - 第一个是您通常如何从Fragment 与您的Activity 通信。 - 第三个是您通常如何实例化您的Fragment,同时将数据从您的Activity 传递给它。当您已经运行了 Fragment 的实例时,您将不得不使用第一种方法。

【讨论】:

以上是关于从片段访问父活动的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用视图绑定从片段更改父活动中的视图[重复]

访问片段的子视图时出现空指针异常

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

从意图活动访问片段方法

从片段访问数据库以在列表中显示

如何访问活动内部/从活动中的片段视图组件