最近總是聽到技術羣裏面有人提出需求,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就講解到這裏了,對於咱們使用者來講比較簡單,沒有幾行代碼,基本都封裝好了,站在巨人的肩膀上真好,若是想分析源碼的,能夠看鴻洋大神的博客.比個人詳細多了.