多个Activity与Fragment之间的数据传递
生活随笔
收集整理的這篇文章主要介紹了
多个Activity与Fragment之间的数据传递
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
多個(gè)Activity與Fragment之間數(shù)據(jù)傳遞
- 問題描述
- 解決思路
- 具體解決
bug de到親媽落淚。
問題描述
首先展示個(gè)人問題的整體框架:
- ActivityA:主頁面,有一個(gè)PageView控件放有多個(gè)Fragment;存在一個(gè)按鈕可以啟動(dòng)ActivityB。
- ActivityB:存在按鈕可以啟動(dòng)ActivityC。
- ActivityC:填寫表單,要求返回?cái)?shù)據(jù)到ActivityA的某個(gè)Fragment。
當(dāng)前的問題就是:
如何從ActivityA依次啟動(dòng)Activity,最后在ActivityA中的Fragmnet中獲取ActivityC的數(shù)據(jù)?
解決思路
參照文章:
https://blog.csdn.net/SYIF88/article/details/50582378?_t=t
大概就是,按照“棧”的思想,通過一步步返回不同的resultCode,使ActivityA知道應(yīng)該對(duì)應(yīng)操作哪個(gè)Fragment。最后在ActivityA的onActivityResult()方法中調(diào)用對(duì)應(yīng)Fragment.onActivityResult()即可。
具體解決
ActivityA -> ActivityB
startActivityForResult(new Intent(ActivityA.this, ActivityB.class), REQUEST_CODE_NEW_FAB_CHOICE);ActivityB -> ActivityC
startActivityForResult(new Intent(ActivityB.this, ActivityC.class), REQUEST_CODE_NEW_EDIT_RECEIVE);ActivityC返回?cái)?shù)據(jù)給ActivityB
data = new Intent(); data.putExtra("XXXX", XXXX.getText().toString()); setResult(RESULT_CODE_EDIT_RECEIVE_OK, data); finish();ActivityB返回?cái)?shù)據(jù)給ActivityA
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_NEW_EDIT_RECEIVE && resultCode == RESULT_CODE_EDIT_RECEIVE_OK) {setResult(RESULT_CODE_FAB_RECEIVE_OK, data);finish();}}ActivityA獲得數(shù)據(jù),分析操作哪個(gè)Fragment,調(diào)用對(duì)應(yīng)的onActivityResult()
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_NEW_FAB_CHOICE && resultCode == RESULT_CODE_FAB_RECEIVE_OK) {bottomNavigationView = findViewById(R.id.bottom_navigation_view);bottomNavigationView.setCurrentItem(2);Fragment receiveFragment = adapter.getItem(2);receiveFragment.onActivityResult(requestCode, resultCode, data);}}總結(jié)
以上是生活随笔為你收集整理的多个Activity与Fragment之间的数据传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顶层const和底层const的区别
- 下一篇: 标准库类型string的基本功能和使用