EventBus實現activity跟fragment交互數據

最近老是聽到技術羣裏面有人提出需求,activity跟fragment交互數據,或者從一個activity跳轉到另外一個activity的fragment,所以我給大家介紹一個開源項目,EventBus.在 TextView+Fragment實現底部導航欄   這個Demo的基礎上實現fragment跟activity的傳參,從設置界面的activity如何跳轉到首頁的推薦.


Android EventBus是345大神 告訴我的.然後自己網上找資料學習了下,簡單方便好用.我參考的是鴻洋大神的博客:http://blog.csdn.net/lmj623565791/article/details/40920453


效果圖如下:



好了言說正傳,接下來如何讓你的項目不再擔心activity跟fragment傳參跳轉的煩惱.

一:使用Android EventBus需要jar包一個,文章末尾我會貼出demo下載地址.裏面就會包含

二:接收EventBus事件的類需要做以下幾個工作

     1).在onCreate中把當前類註冊到EventBus中,EventBus就是一個單例模式.

 

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		EventBus.getDefault().register(this);
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

 

     2).記得在onDestroy方法中取消註冊.

 

	@Override
	public void onDestroy() {
		super.onDestroy();
		EventBus.getDefault().unregister(this);//取消註冊
	}

 

 

     3).寫一個onEvent開頭的方法來接收別的頁面發送過來的事件,方法必須public修飾,參數類型我們自己定義,但是一定要記住,發送消息的時候也必須這個類型.

 

	/**
	 * 這裏用到的了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中定義

 

     public static final int LOGOUT=1;//退出

 

 

 三.發送事件的類就一行代碼就行.我們可以看到post方法中傳參是一個int類型常量,而onEventMainThread方法中的參數是int的封裝類型,所以在此提醒大家,類型一

       定要一致

 

     EventBus.getDefault().post(MainActivity.LOGOUT);


好了,eventbus就講解到這裏了,對於我們使用者來說比較簡單,沒有幾行代碼,基本都封裝好了,站在巨人的肩膀上真好,如果想分析源碼的,可以看鴻洋大神的博客.比我的詳細多了.


點擊下載源碼

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章