Android实现Fragment跨Activity回调通信

个人喜欢复杂东西简单化,这里就不做理论性描述,实现这方法当然很多,比如可以使用广播,实现Activity回调再调用Fragment等,这里是直接Activity回调到Fragment

  1. 效果流程图

2.实现流程

2.1 接口类,如CallBackInterface.java

package com.cyy.test;
public interface CallBackInterface<T> {
    void onCallBack(T var);
}

2.2 Activity接口方法设置

package com.cyy.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity2 extends Activity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);

        Button button=(Button)findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //执行回调
                instance.callBacker.onCallBack("来之Activity2回调");
                if (instance!=null){
                    instance.finish();
                    instance=null;
                }

                finish();
                break;
        }
    }

    ////////////////////////////
    //第二步
    //设置单例
    public static Activity2 instance;
    public static Activity2 getInstance(){
        if (instance==null){
            instance=new Activity2();
        }
        return instance;
    }

    //设置回调方法
    CallBackInterface <String> callBacker;
    public void onCallBack(CallBackInterface<String> callBacker) {
        this.callBacker=callBacker;
    }
    ////////////////////////////////
}

2.3 Activity1中Fragment接口方法定义,打开Actvity2界面并设置回调方法

package com.cyy.test;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

public class MyFragment extends Fragment implements View.OnClickListener{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_my, container, false);

        Button button=(Button)view.findViewById(R.id.button);
        button.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                //点击跳转到到Activity2
                startActivity(new Intent(getActivity(), Activity2.class));
                //接口回调方法定义
                callBack();
                break;
        }
    }

    ////////////////////////////////////////////
    //第三步
    //接口定义
    public void callBack() {
        Activity2.getInstance().onCallBack(new CallBackInterface<String>() {
            @Override
            public void onCallBack(String var) {
                Toast.makeText(getActivity(), "成功回调" + var, Toast.LENGTH_LONG).show();
            }
        });
    }
    /////////////////////////////////////////////
}

3.Demo代码,开发工具和版本号Android Sutdio 1.2.0.0

时间: 2024-11-05 17:27:26

Android实现Fragment跨Activity回调通信的相关文章

android中fragment与activity之间通信原理以及例子

参考文章 http://blog.csdn.net/guozh/article/details/25327685#comments Activity和fragment通信方式一般有3种方法 1.在fragment中定义接口, Activity去实现接口--->查看上面的参考文章 2.使用广播机制 3.使用EventBus 这3种方式 推荐使用EventBus 下面介绍第2种方式广播通信机制: 首先MainActivity中引入一个fragment, activity的布局很简单,里面只有一个 f

利用接口回调实现fragment与activity的通信

Fragment 与activity相互传递数据,可按如下方式进行: 1.Activity 向Fragment传递数据:在Activity中创建Bundle数据包(如果传输涉及对象,要实现对象的系列化),并调用Fragment的setArguments(Bundle      bundle)方法即可实现将Bundle数据包传给Fragment,这个很容易实现. 2.但是如果反过来呢,单我们点击触发Fragment的事件时,希望将数据返回Activity,Activity获得数据进行之后的操作,也

android中fragment和activity之间相互通信

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信.下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法. 1. activity 向fragment发出通信,就这么写: private OnMainListener mainListener; // 绑定接口 @Override public void onAttachFragment(Fragmentfragment) { try { mainListener =

Android学习——Fragment与Activity通信(二)

接下来就要到Fragment向Activity传输数据了.主要的思路,就是在Fragment中创建一个回调接口,利用该回调接口实现Fragment向Activity传输数据的功能. 回调函数(接口) 在学习利用回调接口实现Fragment向Activity传输数据之前,首先要对回调函数有所了解,下面引用知乎用户futeng的回答,侵删:https://www.zhihu.com/question/19801131/answer/26586203. 简单来说,回调函数就是当在一个类A中去调用类B的

Android的Fragment中的互相通信-桥梁activity

Android的Fragment中的互相通信-桥梁activity 效果图如下: 项目结构图如下: Fragment1: package com.demo.fragmenttongxin; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import an

Android 笔记-Fragment 与 Activity之间传递数据

Fragment 与 Activity之间传递数据有两种方法,一种是使用setArgument,一种是使用接口回调.下面先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这里打个比喻:假如Activity是皇帝,它设立了三个部门(如三省六部),分别是Fragment1,Fragment2和Fragemnt3: 现在他现在要吩咐部门Fragment1去做一些事情,比如说:领兵攻打岛国!!好,它肯定不自己跑去告诉该部门的. 一般来说,会有个宰相或者太监总管来负责皇帝口谕是

Android实战简易教程-第五十二枪(Fragment和Activity之间通信)

Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Activity->Fragment传递数据 1.main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

Android中Fragment和Activity之间的互操作代码例子

摘要 本文介绍了Android中一个Activity中有多个Fragment的情况下,Fragment之间如何通过Activity进行互操作. 源代码 源代码地址为:http://download.csdn.net/detail/logicteamleader/8931199 源代码使用ADT编写,ADT版本为2014,Android版本为android-22. 技术要点 1.在Activity中的多个Fragment之间要互操作,一定要通过此Activity,不能直接通信: 2.在Activi

Android中Fragment与Activity之间的交互(两种实现方式)

(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragment与