日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Fragment 与DialogFragment 相互之间传递数据

發布時間:2024/4/15 90 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fragment 与DialogFragment 相互之间传递数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景:

步驟<1>在FragmentA 中觸發顯示DialogFragmentB,并傳遞參數數據mA2B給DialogFragmentB,在DialogFragmentB獲取該參數--mA2B。

步驟<2>在DialogFragmentB中對傳遞的參數mA2B進行一些處理得到結果mB2A,最后點擊“完成”,需要將mB2A回傳給FragmentA中。

步驟<1><2>中的數據傳遞如何完成呢?


步驟<1>數據傳遞方法如下:

該步驟的中的數據傳遞與獲取方式與一般的Fragment數據傳遞獲取方式一樣,就是利用Fragment的setArguments(Bundle bundle)方法進行數據傳遞(將需要傳遞的數據保存在Bundler對象中即可),利用Fragment的getArguments()來獲取Bundle,從中取出數據即可。

從FragmentA中傳遞mA2B到DialogFragmentB:利用DialogFragmentB的setArguments()方法傳遞數據mA2B(將mA2B保存到Bundle對象中);

在DialogFragmentB獲取mA2B: 在DialogFragmentB的onCreate()方法中調用getArguments(),獲取Bundle對象,從中取出mA2B即可;

(1)在FragmentA中啟動DialogFragmentB的代碼如下:

DialogFragmentB fragmentB = DialogFragmentB.newInstance(mA2B); fragmentB.setTargetFragment(FragmentA.this, FRAGMNET_A_2_FRAGMENT_B_REQUEST_CODE); fragmentB.show(getChildFragmentManager(),DIALOG_FRAGMNET_B_TAG);

(2)DialogFragmentB的newInstance()方法如下:

public static DialogFragmentB newInstance(A2B a2b) { DialogFragmentB fragmentB = new DialogFragmentB(); Bundle bundle = new Bundle(); bundle.putSerializable(ARGUMENTS_A_2_B_KEY,a2b); filterFragment.setArguments(bundle); return fragmentB; }
(3) 在DialogFragmentB 的onCreate()方法獲取mA2B,如下 :

@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = getArguments(); if (bundle != null) { Object a2bObj = bundle.getSerializable(ARGUMENTS_A_2_B_KEY); mA2B = a2bObj instanceof A2B ? (A2B) tagInfoObj : null; } }
步驟<2>數據傳遞方法如下:

從DialogFragmentB中傳遞mB2A數據到FragmentA中,這里主要是利用DialogFragmentB的getTargetFrament().onActivityResult()方法。

(1)在DialogFragmentB中設置mB2A數據,以傳遞給FragmentA

if (getTargetFragment() != null) { Intent resultIntent = new Intent(); resultIntent.putExtra(ARGUMENTS_B_2_A_KEY,mB2A); getTargetFragment().onActivityResult(DialogFragmentB.FRAGMNET_A_2_Fragment_B_REQUEST_CODE, Activity.RESULT_OK, resultIntent); }(2)在FragmentA的onActivityResult的方法中獲取到mB2A

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case FRAGMNET_A_2_FRAGMENT_B_REQUEST_CODE: if (resultCode == Activity.RESULT_OK && data != null) {//獲取從DialogFragmentB中傳遞的mB2ABundle bundle = data.getExtras(); if (bundle != null) { Object object = bundle.get(DialogFragmentB.ARGUMENTS_B_2_A_KEY); if (object instanceof B2A) { mB2A = (B2A) object; //to do other operation //to do xxxxxx } } } break; default: break; } }



總結

以上是生活随笔為你收集整理的Fragment 与DialogFragment 相互之间传递数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。