在Fragment中OnActivityResult方法中接收Activity中返回的值


在Fragment中OnActivityResult方法中接收Activity中返回的值

 

在Fragment中OnActivityResult方法中接收Activity中返回的值,有需要的朋友可以參考下。


在開發android中,有些人往往很疑惑,當一個FragmentActivity中有多個碎片的時候,如a,b,c三個碎片,
其中b中進行了操作,跳轉到了新的界面Dactivity)。但是當D操作完后,返回值到碎片b。那么問題就來了,肯定會有人問,b是一個碎片,如何才能接收到D傳過來的值呢?

第一步:
我們要在父類的FragmentActivity中進行一步操作:

public class MyFragmentActivity extends FragmentActivity{ public FragmentTransaction mFragmentTransaction; public FragmentManager fragmentManager; public String curFragmentTag = ""; ... /*在fragment的管理類中,我們要實現這部操作,而他的主要作用是,當D這個activity回傳數據到 這里碎片管理器下面的fragnment中時,往往會經過這個管理器中的onActivityResult的方法。*/ protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /*在這里,我們通過碎片管理器中的Tag,就是每個碎片的名稱,來獲取對應的fragment*/ Fragment f = fragmentManager.findFragmentByTag(curFragmentTag); /*然后在碎片中調用重寫的onActivityResult方法*/ f.onActivityResult(requestCode, resultCode, data); } ... }

第二步:比如,在c碎片中(fragment),我們要進行的操作:
A:對了,這里需要注意下:在實際開發中,往往會出現在子的fragment中,還會去管理下一層的多個碎片的管理,對於這種比較復雜的碎片管理傳值又需怎樣做呢?其實做法還是和上面一樣的

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Fragment f = fragmentManager.findFragmentByTag(curFragmentTag); f.onActivityResult(requestCode, resultCode, data); }

B:好的,終於進入主題了,到最終的b(fragment)接收傳過來的數據了。那我就直接上代碼了:

public class b extends Fragment{ *** @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case 1: if (resultCode != Activity.RESULT_OK) { return; } break; default: break; } } *** }

好吧,講了這么多,雖說我的表達還是欠佳,但是,相信大家應該能了解如何傳值了吧,至於最后的activtiy中如何做,相必大伙都清楚。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM