Activity和Fragment之間的數(shù)據(jù)通信

csdnActivity和Fragment之間的數(shù)據(jù)通信有兩種:Activity向Fragment中傳遞數(shù)據(jù)、Fragment向Activity傳遞數(shù)據(jù)。

學(xué)習(xí)Android的同學(xué)注意了?。。?/b>

學(xué)習(xí)過(guò)程中遇到什么問(wèn)題或者想獲取學(xué)習(xí)資源的話,歡迎加入Android學(xué)習(xí)交流群,群號(hào)碼:364595326? 我們一起學(xué)Android!

同時(shí)Activity之間也能傳遞數(shù)據(jù),F(xiàn)ragment之間又能傳遞數(shù)據(jù)。本文主要是總結(jié)自己在項(xiàng)目中遇到的問(wèn)題以及解決辦法!

Activity向Fragment中傳遞數(shù)據(jù)

項(xiàng)目中遇到的問(wèn)題:項(xiàng)目采用的是一個(gè)MainActivity + 4個(gè)Fragment搭建的框架,其余的小功能采用的是Activity去實(shí)現(xiàn);在實(shí)現(xiàn)個(gè)人中心(Fragment)時(shí)需要將登錄的用戶名返回給個(gè)人中心顯示在頁(yè)面上。

我的實(shí)現(xiàn)方法:

通過(guò)用戶注冊(cè)時(shí)向數(shù)據(jù)庫(kù)中插入用戶信息,在用戶中心判斷用戶是否存在,存在則顯示用戶名。這個(gè)方法有點(diǎn)不像Fragment向Activity傳遞數(shù)據(jù)的解決辦法。但是能實(shí)現(xiàn)我所要求的功能。(本人小白,能實(shí)現(xiàn)功能已經(jīng)高興一天了,哈哈)

網(wǎng)上的數(shù)據(jù)傳遞方法 1(鏈接):

給Fragment添加newInstance方法,將需要的參數(shù)傳入,設(shè)置到bundle中,然后setArguments(bundle),最后在onCreate中進(jìn)行獲?。?/p>

注意事項(xiàng):setArguments方法必須在fragment創(chuàng)建以后,添加給Activity前完成。千萬(wàn)不要,首先調(diào)用了add,然后設(shè)置arguments

網(wǎng)上的數(shù)據(jù)傳遞方法 2

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

網(wǎng)上的數(shù)據(jù)傳遞方法 3

Activity在切換Fragment的時(shí)候,通過(guò)setArguments向Fragment傳遞參數(shù),F(xiàn)ragment通過(guò)getArguments();獲得從activity中傳遞過(guò)來(lái)的值

Fragment向Activity傳遞數(shù)據(jù)

網(wǎng)上的數(shù)據(jù)傳遞方法 1(鏈接):

在Fragment中寫(xiě)一個(gè)回調(diào)接口

在Activity中實(shí)現(xiàn)這個(gè)接口

在Fragment中的onAttach方法中得到Activity中實(shí)現(xiàn)好的實(shí)例化接口對(duì)象

用接口對(duì)象進(jìn)行傳值

Activity向Activity傳遞數(shù)據(jù)

第一行代碼中寫(xiě)到:

活動(dòng)之間傳遞數(shù)據(jù)可以采用new Intent().putExtra()方法傳遞,putExtra()方法的第一個(gè)參數(shù)是鍵,第二個(gè)參數(shù)是值;在第二個(gè)Activity中g(shù)etIntent即可拿到第一個(gè)Activity傳遞過(guò)來(lái)的intent,在通過(guò)intent.get…Extra()過(guò)來(lái)方法拿到第一個(gè)Activity傳遞過(guò)來(lái)的數(shù)據(jù)。

使用Bundle來(lái)傳遞數(shù)據(jù):首先創(chuàng)建一個(gè)Bundle對(duì)象,采用bundle.putExtra()方法,道理同上,接著intent.putExtra(bundle)傳遞數(shù)據(jù)。在第二個(gè)Activity中g(shù)etIntent即可拿到第一個(gè)Activity傳遞過(guò)來(lái)的bundle,在通過(guò)bundle.get…Extra()過(guò)來(lái)方法拿到第一個(gè)Activity傳遞過(guò)來(lái)的數(shù)據(jù)。

Activity返回?cái)?shù)據(jù)給上一個(gè)Activity

第一行代碼中如此寫(xiě)到:

在第一個(gè)Activity中啟動(dòng)第二個(gè)Activity:startActivityForResult(intent,1)//第一個(gè)參數(shù)是intent,第二個(gè)參數(shù)是請(qǐng)求碼,只要值唯一就ok

在第二個(gè)Activity中用intent攜帶數(shù)據(jù),然后setResult(RESULR_OK,intent);將數(shù)據(jù)返回,最后finish();關(guān)閉當(dāng)前Activity(切記一定要關(guān)閉當(dāng)前Activity)

在第一個(gè)Activity中重寫(xiě)onActivityResult( int requestCode,int resultCode,Intetnt data)方法,通過(guò)判斷requestCode來(lái)識(shí)別是哪個(gè)Activity返回的數(shù)據(jù),在判斷返回?cái)?shù)據(jù)的處理結(jié)果,最后通過(guò)data.getStringExtra()方法拿到數(shù)據(jù)。

Fragment向Fragment傳遞數(shù)據(jù)

回顧項(xiàng)目中采用一個(gè)MainActivity + 4個(gè)Fragment搭建的框架,那么我想在其中的兩個(gè)Fragment之間有數(shù)據(jù)交互怎么解決?

第一行代碼中如此說(shuō)道:

首先在一個(gè)Fragment中拿到與之相關(guān)聯(lián)的Activity,然后通過(guò)這個(gè)Activity去獲取另一個(gè)Fragment,這樣就實(shí)現(xiàn)了Fargment與Fragment之間的通信

網(wǎng)上的說(shuō)法(鏈接):

在Fragment2中,新建一個(gè)函數(shù):newInstance(String text)來(lái)接收傳過(guò)來(lái)的參數(shù)

然后在Fragment2的OnCreateView的時(shí)候再?gòu)腶rguments中獲取參數(shù)

在Fragment1中,在調(diào)起Fragmen2t時(shí),通過(guò)調(diào)用newInstance函數(shù)來(lái)獲取實(shí)例并傳遞參數(shù)

Fragment2返回?cái)?shù)據(jù)給ragment1

采用回調(diào)方法實(shí)現(xiàn)[直接看第三部分](鏈接

總結(jié)

數(shù)據(jù)傳遞出去:

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

可以采用新建一個(gè)setValue方法將數(shù)據(jù)傳遞出去

采用回調(diào)方法實(shí)現(xiàn)數(shù)據(jù)傳遞

數(shù)據(jù)傳遞回來(lái):

采用接口回調(diào)方式

因此接口回調(diào)方法很重要,一點(diǎn)要掌握??!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,029評(píng)論 25 709
  • 白云蒼狗,時(shí)光荏苒,青春年華不知不覺(jué)間在指縫間流逝,如五顏六色的泡沫,還來(lái)不及放飛,即刻成為泡影,徒留一股化學(xué)劑的...
    綠油油Yan閱讀 234評(píng)論 0 1
  • “信”是書(shū)的標(biāo)題,也是貫穿整本書(shū)的線索,信中寄托的是哥哥對(duì)弟弟的牽掛,而一封封高墻之內(nèi)的信,帶給他弟弟的卻是...
    SIRIUS_SHUAI閱讀 549評(píng)論 0 0
  • 重置mysql的root密碼的方法 Windows平臺(tái) 首先檢查mysql服務(wù)是否啟動(dòng),若已啟動(dòng)則先將其停止服務(wù),...
    Tag_sk閱讀 536評(píng)論 1 0
  • 作為一名十年的資深觀眾,我對(duì)于美劇的情愫不亞于我對(duì)于美食的熱愛(ài)??炊嗔似鋵?shí)你也會(huì)發(fā)現(xiàn)其實(shí)美劇也有三六九等:青春美劇...
    會(huì)有熊貓的閱讀 1,738評(píng)論 0 2

友情鏈接更多精彩內(nèi)容