在使用ViewPager和TabLayout的活动中,我使用了两个片段。我想在我的Activity和Fragments之间发送和接收数据。
我不喜欢使用带有static变量的类来解决这个问题。有没有更好的方法来完成这一任务,而不需要大量的内存和资源。因为静态数据成员不会在app的整个生命周期中死亡。所以他们从不释放任何记忆。这是应用程序在三星设备上运行的一个大问题,或者你可以说是限制内存使用的非根设备。
发布于 2017-11-08 06:31:10
使用接口。以下是Android的摘录,其中包含了如何在Fragment和Activity之间进行通信的详细信息,反之亦然:定义接口。
为了允许片段与其活动进行通信,您可以在片段类中定义一个接口并在活动中实现它。片段在其onAttach()生命周期方法中捕获接口实现,然后调用接口方法以便与活动通信。
这使您的Fragment模块化,并允许您在多个活动中重用相同的Fragment。您所需要做的就是在新的interface中实现Activity。
发布于 2017-11-08 06:54:26
发布于 2017-11-08 07:17:22
下面是片段到活动通信的示例:
公共类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");
}
}}
https://stackoverflow.com/questions/47172965
复制相似问题