详解Android activity与fragment之间的通信交互

前言

纵观市场,大多数的APP都采用导航+fragment这种设计模式,如微信,QQ,京东,淘宝,究其原因:简洁。
在开发过程中不可避免的会出现fragment与fragment,fragment与activity之间的通信交互问题。

本章讲述如何实现fragment与activity之间的通信。

一、APP构成

MainActivity+底部导航栏;

二、通信目的

MainActivity中成员方法test(),fragment中经test()方法判断后,方可执行下一步操作,如执行界面跳转;
例:

public class MainActivity extends Activity{
  public boolean mBaiDuSDK_is_Ok = false;

  public boolean ismBaiDuSDK_is_Ok() {
    return mBaiDuSDK_is_Ok;
  }

  public void setmBaiDuSDK_is_Ok(boolean mBaiDuSDK_is_Ok) {
    this.mBaiDuSDK_is_Ok = mBaiDuSDK_is_Ok;
  } 

}

如上述示例代码,在fragment中需要对mBaiDuSDK_is_Ok进行值判断,执行界面跳转;

三、解决方法

public class Test1Fragment extends Fragment implements OnClickListener {
  private Activity mActivity;

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
               Bundle savedInstanceState) {
    mActivity = getActivity();//在界面创建时,定义父Activity
    view = inflater.inflate(R.layout.fragment_test1, container, false);
    return view;
  }

  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
   // fragment_test1 布局中的一个测试按钮
   Button test_button= (Button) view.findViewById(R.id. test_button);
   test_button setOnClickListener(this);//设置按钮监听事件

   super.onViewCreated(view, savedInstanceState);
  }

  @Override
  public void onClick(View view) {
    // TODO Auto-generated method stub
    switch (view.getId()) {
      //测试按钮监听事件
      case R.id.test_button:
        // mActivity即为代表的父Activity
        Intent intent = new Intent(mActivity, SecondActivity.class);
        Log.i("BAIDUSDK", "验证:" + ((MainActivity) mActivity).ismBaiDuSDK_is_Ok());
        //最为关键的一步,fragment调用父activity的成员方法,进行通信
        if (((MainActivity) mActivity).ismBaiDuSDK_is_Ok()) {
          startActivity(intent);
        } else {
          Log.e("TEST","请确认mBaiDuSDK_is_Ok是否正常!");
        }
      break;
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android Fragment与Activity之间的相互通信实例代码

    Android Fragment与Activity之间的相互通信 前言 自从Android3.0引入Fragment之后,主要是为了支持动态灵活的界面设计和屏幕的适配问题.Fragmenty不能单独存在,必须依赖Activity作为视图展示的一部分,同事它具有自己的生命周期,接收它自己的事件,具有更加灵活的特性,如今Fragment已经被广泛的应用到App开发中,最常见的就是单Activity多Fragment的模式.Fragment依赖于Activity而存在,就不可避免需要与Activity

  • Android中fragment与activity之间的交互(两种实现方式)

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

  • Android基础之Fragment与Activity交互详解

    今天继续讲解Fragment组件的特性,主要是跟Activity的交互和生命周期的关系,我们前面已经说过Fragment是依赖于Activity的,而且生命周期也跟Activity绑定一起.下面我们看看Fragment跟Activity的关系. 1.为Activity创建事件回调方法在一些情况下, 你可能需要一个fragment与activity分享事件. 一个好的方法是在fragment中定义一个回调的interface, 并要求宿主activity实现它.当activity通过interfa

  • Android应用开发中Fragment与Activity间通信示例讲解

    首先,如果你想在android3.0及以下版本使用fragment,你必须引用android-support-v4.jar这个包 然后你写的activity不能再继承自Activity类了,而是要继承android.support.v4.app.FragmentActivity,一些其他的父类也有相应的变化. 由于在android的实现机制中fragment和activity会被分别实例化为两个不相干的对象,他们之间的联系由activity的一个成员对象fragmentmanager来维护.fr

  • Android中Activity和Fragment传递数据的两种方式

    1.第一种方式,也是最常用的方式,就是使用Bundle来传递参数 MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("DATA",values);//这里的values就是我们要传的值 myFragment.setArguments(bundle); 然后在Fragment中的onCreatView方法中,通过getArgments()方法,获取到bundle

  • Android Activity与Fragment之间的跳转实例详解

    Activity及Fragment之间的跳转 直接跳转 基本使用方法 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void jump(Vie

  • 详解Android activity与fragment之间的通信交互

    前言 纵观市场,大多数的APP都采用导航+fragment这种设计模式,如微信,QQ,京东,淘宝,究其原因:简洁. 在开发过程中不可避免的会出现fragment与fragment,fragment与activity之间的通信交互问题. 本章讲述如何实现fragment与activity之间的通信. 一.APP构成 MainActivity+底部导航栏: 二.通信目的 MainActivity中成员方法test(),fragment中经test()方法判断后,方可执行下一步操作,如执行界面跳转:

  • 详解Android.activity销毁流程的工作原理

    继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是: onPause(a) –> onCreate(b) –> onStart(b) –> onResume(b) –> onStop(a) 而我们根据源码也验证了这样的生命周期调用序列,那么Activity的销毁流程呢?它的生命周期的调用顺序又是这样的呢? 这里我们我做一个简单的demo,让一个Activity a启动A

  • 详解Android studio 动态fragment的用法

    fragment的使用时Android的基础,它有两种用法,第一个就是静态的fragment.第二个则是动态的fragment. 静态fragment直接在layout创建你想要的fragment的XML的文件,然后在你的Java包里面创建对应fragment的class文件 布局代码如下所示 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:

  • 详解Android Activity的启动流程

    前言 activity启动的流程分为两部分:一是在activity中通过startActivity(Intent intent)方法启动一个Activity:二是我们在桌面通过点击应用图标启动一个App然后显示Activity:第二种方式相较于第一种方式更加全面,所以本文会以第二种流程来分析. 简要 我们手机的桌面是一个叫做Launcher的Activity,它罗列了手机中的应用图标,图标中包含安装apk时解析的应用默认启动页等信息.在点击应用图标时,即将要启动的App和Launcher.AMS

  • Android中使用开源框架eventbus3.0实现fragment之间的通信交互

    1.概述 在之前的博文中简单介绍过如何实现fragment之间的信息交互:<Android中Fragment与Activity之间的交互(两种实现方式)>,今天继续给大家介绍一种可以实现此效果的另外一种方式EventBus.(相比于handler,接口回调,bundle传参,这个简单好用到哭) EventBus是Android下高效的发布/订阅事件的消息总线.作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment.Activity.Service.线程

  • 详解Android开发中Fragment的使用

    前言 学习Java和Android将近一年的时间了,期间的成果应该就是独立完成了一个Android客户端,并且保证了其在主线版本的稳定性.期间遇到了很多坑,也跟着师兄学到了很多Android知识.但是人总是要拥抱变化,不能让自己太安逸,虽然有不舍,但是我已经证明了自己的学习能力,下一步就是开始做Rom Porting了.这里总结一下之前项目中用到最多的Fragment. Fragment简介 Fragment可以理解成Activity中用户界面的一个行为或者一部分,它必须被嵌套在Activity

  • 详解Android Activity中的几种监听器和实现方式

    Activity 在Activity中,使用findViewById(int resId)方法与布局中的控件绑定 View常用事件接口 View的事件监听是指用户与应用交互,当用户对View进行点击.长按.触摸.移动等动作时.程序对这些动作进行处理 OnClickListener    点击View时的监听 OnLongClickListener  长按View时的监听 OnTouchListener   触摸View时的监听 1.android系统中,OnClickListener 是一种处理

  • 详解Android Activity之间跳转出现短暂黑屏的处理方法

    摘要: 如何解决页面之间跳转时的黑屏问题呢? 在默认情况下,Android应用程序启动时,会有一个黑屏的时期.原因是,首个activity会加载一些数据,比如初始化列表数据.向服务器发送请求获取数据等等.同样,使用startActivity(intent)方法从一个Activity进入到新的Activity时,这个过程中也会出现短暂的黑屏.这个问题的存在是由Android应用框架决定的,但的确很影响用户体验.下面就动手来解决这个黑屏 问题! 第一步:自定义Theme(主题) 在your_proj

  • 详解Android Activity之间切换传递数据的方法

    前面照着android系统的裁剪图片的功能自己写了一个相似的工具.功能是大体上实现了,但留下了一个调用的问题:如何从我的程序调用这个裁剪工具,并且获得裁剪后的图片呢? 其实这个也很简单了,就是intent的基础用法. 先上个图(界面依旧没优化,难看就难看吧): 起始activity,打开图片选择窗口,随便选择一张图片 下面是跳转到裁剪界面 按下crop按钮,退出activity,回到原来界面,并显示裁剪后的图 流程就是这样,也算模拟了系统裁剪功能的整体过程.下面就是实现功能的关键代码和说明了.

随机推荐