首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android :如何在片段和活动之间高效地发送和接收数据?

问Android :如何在片段和活动之间高效地发送和接收数据?
EN

Stack Overflow用户
提问于 2017-11-08 06:28:20
回答 3查看 108关注 0票数 0

在使用ViewPager和TabLayout的活动中,我使用了两个片段。我想在我的Activity和Fragments之间发送和接收数据。

我不喜欢使用带有static变量的类来解决这个问题。有没有更好的方法来完成这一任务,而不需要大量的内存和资源。因为静态数据成员不会在app的整个生命周期中死亡。所以他们从不释放任何记忆。这是应用程序在三星设备上运行的一个大问题,或者你可以说是限制内存使用的非根设备。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-08 06:31:10

使用接口。以下是Android的摘录,其中包含了如何在Fragment和Activity之间进行通信的详细信息,反之亦然:定义接口。

为了允许片段与其活动进行通信,您可以在片段类中定义一个接口并在活动中实现它。片段在其onAttach()生命周期方法中捕获接口实现,然后调用接口方法以便与活动通信。

这使您的Fragment模块化,并允许您在多个活动中重用相同的Fragment。您所需要做的就是在新的interface中实现Activity。

票数 3
EN

Stack Overflow用户

发布于 2017-11-08 06:54:26

你可以用两种方式来做。第一个方法是定义一个接口。接口示例第二种方法是事件总线。事件总线库

我喜欢的事件巴士。即使可能的话,学习rxjava并使用那里的事件逻辑来完成它。Rxjava教程

票数 1
EN

Stack Overflow用户

发布于 2017-11-08 07:17:22

下面是片段到活动通信的示例:

公共类HeadlinesFragment扩展了ListFragment { OnHeadlineSelectedListener mCallback;

代码语言:javascript
复制
// 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");
    }
}

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47172965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档