Fragment中使用 startActivityForResult 与 onActivityResult
2017-08-30 15:12
387 查看
startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。
但是当我们从Fragment中startActivityForResult跳转到Activity中,却发现数据传递不回来。因为这时我们使用的是activity的startActivityForResult方法,我们只需将其改为Fragment的startActivityForResult即可。
但是如果这个Fragment依附的那个Activity也重写了onActivityResult()方法,那么这个Fragment的onActivityResult()方法就获取不到数据了(被那个依附的Activity接受了),这时候我们只需要在这个Activity的onActivityResult()中获取到这个Fragment的对象(通过tag),然后调用这个fragment中的onActivityResult()就可以将值传到这个fragment中了
如有疑问或不对之处,请指出共同交流进步。
但是当我们从Fragment中startActivityForResult跳转到Activity中,却发现数据传递不回来。因为这时我们使用的是activity的startActivityForResult方法,我们只需将其改为Fragment的startActivityForResult即可。
Intent intent = new Intent(activity, PdfReaderActivity.class); this.startActivityForResult(intent, 100); // this为Fragment
@Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case 100: // 处理的代码; break; default: break; } }
但是如果这个Fragment依附的那个Activity也重写了onActivityResult()方法,那么这个Fragment的onActivityResult()方法就获取不到数据了(被那个依附的Activity接受了),这时候我们只需要在这个Activity的onActivityResult()中获取到这个Fragment的对象(通过tag),然后调用这个fragment中的onActivityResult()就可以将值传到这个fragment中了
public void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case Constant.REQUEST_CODE_SCAN_QR: onResultScanQr(resultCode, intent); break; //传到对应fragment中 case Constant.REQUEST_CODE_OPEN_FILE: ((HomeFragment)getSupportFragmentManager().findFragmentById(R.id.fl_home)).onActivityResult(requestCode, resultCode, intent); break; default: break; } }
如有疑问或不对之处,请指出共同交流进步。
相关文章推荐
- 在Fragment中使用startActivityForResult和onActivityResult
- 关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案
- Android使用 startActivityForResult 、 onActivityResult 时的注意事项
- Activity---startActivityForResult()、onActivityResult()和setResult()使用
- Android Fragment startActivityForResult没有调用onActivityResult
- 有关startActivityForResult在fragment中的使用小技巧
- onActivityResult(),startActivityForResult()的使用
- startActivityForResult()、onActivityResult()和setResult()使用
- 关于Activity和Fragment同时使用startActivityForResult的问题
- Fragment中使用startActivityForResult
- [Android学习笔记]startActivityForResult和onActivityResult的使用
- 关于fragment里面调用startActivityForResult,onActivityResult没有反应的学习
- Fragment中使用startActivityForResult
- 在Fragment中使用StartActivityForResult,RequestCode错乱的问题
- Fragment中使用 startActivityForResult
- android.app.Activity类中的startActivityForResult()方法、onActivityResult()方法、setResult()方法的使用
- 在Fragment使用startActivityForResult()方法返回的resultCode不正确
- Android Fragment的使用 七 Argument和startActivityForResult传递数据
- Android使用 startActivityForResult 、 onActivityResult 时的注意事项
- 关于Fragment里面调取startActivityForResult 调取onActivityResult不执行原因