最近总是听到技术群里面有人提出需求,activity跟fragment交互数据,或者从一个activity跳转到另一个activity的fragment,因此我给你们介绍一个开源项目,EventBus.在 TextView+Fragment实现底部导航栏 这个Demo的基础上实现fragment跟activity的传参,从设置界面的activity如何跳转到首页的推荐.php
Android EventBus是345大神 告诉个人.而后本身网上找资料学习了下,简单方便好用.我参考的是鸿洋大神的博客:http://blog.csdn.net/lmj623565791/article/details/40920453
java
效果图以下:框架
好了言说正传,接下来如何让你的项目再也不担忧activity跟fragment传参跳转的烦恼.ide
一:使用Android EventBus须要jar包一个,文章末尾我会贴出demo下载地址.里面就会包含post
二:接收EventBus事件的类须要作如下几个工做学习
1).在onCreate中把当前类注册到EventBus中,EventBus就是一个单例模式.this
@Override protected void onCreate(Bundle savedInstanceState) { EventBus.getDefault().register(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
2).记得在onDestroy方法中取消注册.spa
@Override public void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this);//取消注册 }
3).写一个onEvent开头的方法来接收别的页面发送过来的事件,方法必须public修饰,参数类型咱们本身定义,可是必定要记住,发送消息的时候也必须这个类型..net
/** * 这里用到的了EventBus框架 博客教程:http://blog.csdn.net/lmj623565791/article/details/40920453 * @param type */ public void onEventMainThread(Integer type){ Log.d("XX", "EventBus收到int:"+type); Toast.makeText(this, "处理eventbus请求", 0).show(); if(type==LOGOUT){//登出 tvMain.performClick();//模拟点击首页 mainFragment.setCurrentItem(1);//跳转到推荐页面 } }
4).LOGOUT常量是int类型,在MainActivity中定义code
public static final int LOGOUT=1;//退出
三.发送事件的类就一行代码就行.咱们能够看到post方法中传参是一个int类型常量,而onEventMainThread方法中的参数是int的封装类型,因此在此提醒你们,类型一
定要一致
EventBus.getDefault().post(MainActivity.LOGOUT);
好了,eventbus就讲解到这里了,对于咱们使用者来讲比较简单,没有几行代码,基本都封装好了,站在巨人的肩膀上真好,若是想分析源码的,能够看鸿洋大神的博客.比个人详细多了.