2016-08-11 86 views
0

我是Android开发中的新手。我想在我的片段中添加一个侦听器,点击按钮后会发送一条消息。我需要在我的主要片段类中听取这些信息,以便我的活动可以访问此主片段并处理消息。我还需要删除我的主要片段中的侦听器。那么我如何实现这个?Android中实现侦听器的片段

编辑

MyFragment

sendMessage(message)MyFragment其中有一个按钮点击的方法。需要在这里实现监听器吗?

MainFragment 如何处理在这里这sendMessage事件,并发送至MAinActivity

流动就像MyFragment(childfragment) -> MAinFragment -> MainActivity

+0

欢迎的计算器。你在尝试什么呢? – pRaNaY

回答

1

对于你的活动和片段可以接口之间的通信。这个想法基本上是在给定片段内定义一个接口,并让活动实现该接口。

一旦它实现了这个接口,你就可以在它覆盖的方法中做任何你想做的事情。

为了帮助你一些代码级别的细节,你可以参考http://simpledeveloper.com/how-to-communicate-between-fragments-and-activities/

希望这将帮助!

+0

请参阅我编辑的代码 – Mariana

1

在你的片段类,说MyFragment.java创建一个接口

public interface MyFragmentInterfacer{ 
    void onButtonClick(String msg); 
} 
MyFragmentInterfacer fragmentInterfacer; 

//Override this function as below to set fragmentInterfacer 
@Override 
public void onAttach(Context context){ 
    fragmentInterfacer = (MyFragmentInterfacer)context; 
} 

,并在那里你想去的地方,你想要得到这个消息您的主要活动来调用这个函数

myButton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     if(fragmentInterfacer != null){ 
      fragmentInterfacer.onButtonClick("This is my Message"); 
     } 
    } 
}); 

然后,实现此接口

public class MainActivity implements MyFragment.MyFragmentInterfacer{ 
. 
. 
} 

然后在MainA中实现接口函数ctivity

@Override 
public void onButtonClick(String msg){ 
    //Do something with this message 
} 

要删除此监听器,在你的片段类使用

fragmentInterfacer = null; 

当你想关闭这个监听器。

或者你也可以从按键

myButton.setOnClickListener(null); 

或禁用点击按钮删除onClickListener

myButton.setClickable(false); 
+0

请参阅我的编辑代码 – Mariana