我已经搜索了很多关于如何使用SlidingTabLayout在片段之间进行通信但是没有真正得到一个好答案.我知道使用ActionBar但是我想要使用SlidingTabLayout的
android lollipop的新方法.我试过这个 – >
http://android-er.blogspot.in/2012/06/communication-between-fragments-in.html但我想要材料设计.我将此链接
http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html用于制作材料设计滑动标签.现在我想知道如何在滑动标签之间进行通信.我已经尝试了很多,但找不到我想要的答案.
任何帮助都会非常感激.
任何帮助都会非常感激.
解决方法
最干净的方法是定义一个包含Fragments的Activity将实现的接口.这就是我最近解决这个问题的方法:
首先在它自己的文件中定义接口,因为它必须对其他类可见.
public interface FragmentCommunication { public void printMessage(String message); //.... }
在您的Activity中,您需要实现此接口
public class MainActivity extends ActionBarActivity implements FragmentCommunication { //.... public void printMessage(String message) { System.out.println(message); } }
最后在你的片段中,你可以使用getActivity()获取托管活动,并使用通信方法将活动强制转换为已实现的通信接口,如下所示:
((FragmentCommunication) getActivity()).printMessage("Hello from Fragment!");
编辑:要进一步将消息传递给其他片段,请执行以下操作:由于您的选项卡都扩展了Fragment,因此最好创建另一个接口
public Interface ReceiverInterface { public void receiveMessage(String str); }
public class Tab1 extends Fragment implements ReceiverInterface { // .... code ..... public void receiveString(String str) { //use str } }
要进一步将此消息发送到其他片段,需要活动查看它们.例如,现在修改Activity实现的printMessage()
public void printMessage(String message) { System.out.println(message); //Send the message that came from one fragment to another if (tabFragment1 instanceof ReceiverInterface){ ((ReceiverInterface) tabFragment1).receiveMessage(message); } }