Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android在片段中实现侦听器_Android - Fatal编程技术网

android在片段中实现侦听器

android在片段中实现侦听器,android,Android,我是Android开发的新手。我想在我的片段中添加一个监听器,点击按钮将发送一条消息。我需要在我的主片段类中听这个,以便我的活动可以访问这个主片段并处理消息。我还需要删除主片段中的侦听器。那么我如何实现这一点呢 编辑 我有MyFragment sendMessage(message)是MyFragment中的一种方法,它有一个按钮点击。需要在这里实现侦听器吗 在main片段中 如何在此处处理此sendMessage事件并发送到MAinActivity 该流程类似于MyFragment(child

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

编辑

我有
MyFragment

sendMessage(message)
MyFragment
中的一种方法,它有一个按钮点击。需要在这里实现侦听器吗

main片段中
如何在此处处理此
sendMessage
事件并发送到
MAinActivity


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

,用于在您的活动和您可以访问的片段之间进行通信。其基本思想是在给定片段内定义一个接口,并让活动实现该接口

一旦它实现了该接口,您就可以在它覆盖的方法中执行任何您想要的操作

要帮助您了解一些代码级别的详细信息,您可以参考


希望这会有帮助

对于活动和片段之间的通信,您可以使用接口。其基本思想是在给定片段内定义一个接口,并让活动实现该接口

一旦它实现了该接口,您就可以在它覆盖的方法中执行任何您想要的操作

要帮助您了解一些代码级别的详细信息,您可以参考


希望这会有帮助

在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;
}
public class MainActivity implements MyFragment.MyFragmentInterfacer{
.
.
}
以及在何处调用此函数

myButton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        if(fragmentInterfacer != null){
             fragmentInterfacer.onButtonClick("This is my Message");
        }
    }
});
然后在您希望获取此消息的主要活动中,实现此接口

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;
}
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);

在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;
}
public class MainActivity implements MyFragment.MyFragmentInterfacer{
.
.
}
以及在何处调用此函数

myButton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        if(fragmentInterfacer != null){
             fragmentInterfacer.onButtonClick("This is my Message");
        }
    }
});
然后在您希望获取此消息的主要活动中,实现此接口

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;
}
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);

欢迎收看stackoverflow。您正在尝试什么?欢迎收看stackoverflow。你在试什么?