android实现了片段中的监听器

时间:2016-08-11 14:43:59

标签: android

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

修改

我有MyFragment

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

MainFragment 如何在此处理此sendMessage事件并发送至MAinActivity

流程类似于MyFragment(childfragment) -> MAinFragment -> MainActivity

2 个答案:

答案 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;
当您想要禁用此侦听器时,在您的片段类中

或者您可以从按钮

中删除onClickListener
myButton.setOnClickListener(null);

或禁用点击按钮

myButton.setClickable(false);