我是Android开发的新手。我想在我的片段中添加一个监听器,按下按钮后会发送一条消息。我需要在我的主片段类中听这个,以便我的活动可以访问这个主片段并处理消息。我还需要删除主片段中的监听器。那么我该如何实现呢?
修改
我有MyFragment
sendMessage(message)
是MyFragment
中点击按钮的方法。需要在这里实现监听器吗?
MainFragment
如何在此处理此sendMessage
事件并发送至MAinActivity
流程类似于MyFragment(childfragment) -> MAinFragment -> MainActivity
答案 0 :(得分:1)
对于您的活动和片段之间的通信,您可以进行接口。这个想法基本上是在给定片段内定义一个接口,让活动实现该接口。
一旦实现了该界面,您就可以在它覆盖的方法中执行任何操作。
为了帮助您了解一些代码级别的详细信息,您可以参考http://simpledeveloper.com/how-to-communicate-between-fragments-and-activities/
希望这会有所帮助!
答案 1 :(得分:1)
在你的fragment类中,假设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{
.
.
}
然后在MainActivity中实现接口函数
@Override
public void onButtonClick(String msg){
//Do something with this message
}
要删除此侦听器,请使用
fragmentInterfacer = null;
当您想要禁用此侦听器时,在您的片段类中。
或者您可以从按钮
中删除onClickListenermyButton.setOnClickListener(null);
或禁用点击按钮
myButton.setClickable(false);