Android 在Activity中响应Fragment中的事件

来源:互联网 发布:json文件打开乱码 编辑:程序博客网 时间:2024/05/18 15:55

原址:http://blog.csdn.net/u013003052/article/details/50445354

当我们想要在fragment去执行一些代码,但是这个代码我们想要把它放在activity里面去执行。那么activity里这段代码是如何在fragment中去启动的呢? 
使用接口的方法,可以为我们去实现这个功能。以下分为几个步骤去到达这个功能。

  • ① 创建一个interface接口,在里面写上抽象方法
  • ② 在fragment中,声明这个接口
  • ③ activity里implement这个接口,并实现抽象方法。改方法就是我们想要在activity中实现的方法,写上自己详细的代码
  • ④ 在fragment中调用它

①创建一个interface接口

/** * Created by qin on 2016/1/1. * 用于fragment传递事件给activity */public interface SendMessageCommunitor {    /**从fragment发送消息     * @param msg 消息内容     * */    void sendMessage(String msg);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

②在fragment中,声明这个接口

    //...    private SendMessageCommunitor sendMessage;    //...        @Override    public void onAttach(Activity activity) {        super.onAttach(activity);        sendMessage = (SendMessageCommunitor) activity;    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

③ activity里implement这个接口,并实现抽象方法

public class MainActivity extends AppCompatActivity implements SendMessageCommunitor {//...    @Override    public void sendMessage(String msg) {        //...写上你想执行的代码    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

④ 在fragment中调用它

    @Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                sendMessage.sendMessage("open");            }        });        //...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

阅读全文
0 0