多个Activity与Fragment之间的数据传递
生活随笔
收集整理的這篇文章主要介紹了
多个Activity与Fragment之间的数据传递
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多個Activity與Fragment之間數據傳遞
- 問題描述
- 解決思路
- 具體解決
bug de到親媽落淚。
問題描述
首先展示個人問題的整體框架:
- ActivityA:主頁面,有一個PageView控件放有多個Fragment;存在一個按鈕可以啟動ActivityB。
- ActivityB:存在按鈕可以啟動ActivityC。
- ActivityC:填寫表單,要求返回數據到ActivityA的某個Fragment。
當前的問題就是:
如何從ActivityA依次啟動Activity,最后在ActivityA中的Fragmnet中獲取ActivityC的數據?
解決思路
參照文章:
https://blog.csdn.net/SYIF88/article/details/50582378?_t=t
大概就是,按照“?!钡乃枷?#xff0c;通過一步步返回不同的resultCode,使ActivityA知道應該對應操作哪個Fragment。最后在ActivityA的onActivityResult()方法中調用對應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返回數據給ActivityB
data = new Intent(); data.putExtra("XXXX", XXXX.getText().toString()); setResult(RESULT_CODE_EDIT_RECEIVE_OK, data); finish();ActivityB返回數據給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獲得數據,分析操作哪個Fragment,調用對應的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);}}總結
以上是生活随笔為你收集整理的多个Activity与Fragment之间的数据传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顶层const和底层const的区别
- 下一篇: 标准库类型string的基本功能和使用