Activity和Fragment之間的數據通信

Activity和Fragment之間的數據通信有兩種:Activity向Fragment中傳遞數據、Fragment向Activity傳遞數據。

學習Android的同學注意了!!!

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Android學習交流羣,羣號碼:364595326  我們一起學Android!

同時Activity之間也能傳遞數據,Fragment之間又能傳遞數據。本文主要是總結自己在項目中遇到的問題以及解決辦法!

Activity向Fragment中傳遞數據

項目中遇到的問題:項目採用的是一個MainActivity + 4個Fragment搭建的框架,其餘的小功能採用的是Activity去實現;在實現個人中心(Fragment)時需要將登錄的用戶名返回給個人中心顯示在頁面上。

我的實現方法:

通過用戶註冊時向數據庫中插入用戶信息,在用戶中心判斷用戶是否存在,存在則顯示用戶名。這個方法有點不像Fragment向Activity傳遞數據的解決辦法。但是能實現我所要求的功能。(本人小白,能實現功能已經高興一天了,哈哈)

網上的數據傳遞方法 1(鏈接):

給Fragment添加newInstance方法,將需要的參數傳入,設置到bundle中,然後setArguments(bundle),最後在onCreate中進行獲取;

注意事項:setArguments方法必須在fragment創建以後,添加給Activity前完成。千萬不要,首先調用了add,然後設置arguments

網上的數據傳遞方法 2

直接在Fragment中採用getActivity.getIntent()拿到Activity中的參數,故此能拿到Activity中的方法

網上的數據傳遞方法 3

Activity在切換Fragment的時候,通過setArguments向Fragment傳遞參數,Fragment通過getArguments();獲得從activity中傳遞過來的值

Fragment向Activity傳遞數據

網上的數據傳遞方法 1(鏈接):

在Fragment中寫一個回調接口

在Activity中實現這個接口

在Fragment中的onAttach方法中得到Activity中實現好的實例化接口對象

用接口對象進行傳值

Activity向Activity傳遞數據

第一行代碼中寫到:

活動之間傳遞數據可以採用new Intent().putExtra()方法傳遞,putExtra()方法的第一個參數是鍵,第二個參數是值;在第二個Activity中getIntent即可拿到第一個Activity傳遞過來的intent,在通過intent.get…Extra()過來方法拿到第一個Activity傳遞過來的數據。

使用Bundle來傳遞數據:首先創建一個Bundle對象,採用bundle.putExtra()方法,道理同上,接着intent.putExtra(bundle)傳遞數據。在第二個Activity中getIntent即可拿到第一個Activity傳遞過來的bundle,在通過bundle.get…Extra()過來方法拿到第一個Activity傳遞過來的數據。

Activity返回數據給上一個Activity

第一行代碼中如此寫到:

在第一個Activity中啓動第二個Activity:startActivityForResult(intent,1)//第一個參數是intent,第二個參數是請求碼,只要值唯一就ok

在第二個Activity中用intent攜帶數據,然後setResult(RESULR_OK,intent);將數據返回,最後finish();關閉當前Activity(切記一定要關閉當前Activity)

在第一個Activity中重寫onActivityResult( int requestCode,int resultCode,Intetnt data)方法,通過判斷requestCode來識別是哪個Activity返回的數據,在判斷返回數據的處理結果,最後通過data.getStringExtra()方法拿到數據。

Fragment向Fragment傳遞數據

回顧項目中採用一個MainActivity + 4個Fragment搭建的框架,那麼我想在其中的兩個Fragment之間有數據交互怎麼解決?

第一行代碼中如此說道:

首先在一個Fragment中拿到與之相關聯的Activity,然後通過這個Activity去獲取另一個Fragment,這樣就實現了Fargment與Fragment之間的通信

網上的說法(鏈接):

在Fragment2中,新建一個函數:newInstance(String text)來接收傳過來的參數

然後在Fragment2的OnCreateView的時候再從arguments中獲取參數

在Fragment1中,在調起Fragmen2t時,通過調用newInstance函數來獲取實例並傳遞參數

Fragment2返回數據給ragment1

採用回調方法實現[直接看第三部分](鏈接

總結

數據傳遞出去:

可以採用intent,或者bundle傳遞出去

可以採用新建一個setValue方法將數據傳遞出去

採用回調方法實現數據傳遞

數據傳遞回來:

採用接口回調方式

因此接口回調方法很重要,一點要掌握!!

發佈了10 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章