我使用ViewPager
和TabLayout
在我的活动中使用了两个片段。我想在Activity
和Fragments
之间发送和接收数据。
我不喜欢使用带有static
变量的类来解决此问题。有没有更好的方法来完成这项任务而不会浪费大量的内存和资源。因为静态数据成员永远不会在app的整个生命周期中死亡。所以他们从不释放任何大块的记忆。对于在三星设备中运行的应用程序来说,这是一个很大的问题,或者您可以说限制 RAM 的使用的非根设备。
答案 0 :(得分:3)
使用界面。以下是Android文档的摘录,其中包含有关如何在Fragment
和Activity
之间进行通信的示例的详细信息,反之亦然:Define an Interface。
要允许Fragment与其Activity进行通信,您可以在Fragment类中定义接口并在Activity中实现它。 Fragment在其onAttach()生命周期方法中捕获接口实现,然后可以调用Interface方法以与Activity通信。
这会使您的Fragment
模块化,并允许您在多个活动中重复使用相同的Fragment
。您需要做的就是在新interface
中实施Activity
。
答案 1 :(得分:1)
你可以通过两种方式完成。 第一种方法是定义一个接口。 interface example 第二种方法是eventbus。 eventbus library
我的偏好eventbus。即使可能,也要学习rxjava并使用事件逻辑。 Rxjava tutorial
答案 2 :(得分:1)
以下是片段到活动通信的示例:
public class HeadlinesFragment扩展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");
}
}
}