概述
多个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
大概就是,按照“栈”的思想,通过一步步返回不同的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之间的数据传递的全部内容,希望文章能够帮你解决多个Activity与Fragment之间的数据传递所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复