首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

方法onActivityResult不会被调用,并且在调用resultCode时始终为零

可能是由以下几个原因引起的:

  1. 没有正确设置Activity的启动模式:在Android中,Activity有不同的启动模式,如standard、singleTop、singleTask和singleInstance。如果启动模式设置不正确,可能会导致onActivityResult方法不被调用。建议检查启动该Activity的Intent是否设置了正确的标志位。
  2. 没有正确设置requestCode:在启动Activity时,需要传递一个requestCode参数,用于标识该请求的唯一性。在调用startActivityForResult方法时,requestCode应该是一个非零的整数值。在onActivityResult方法中,可以通过判断requestCode来确定是哪个请求返回的结果。
  3. 没有正确设置setResult方法:在被启动的Activity中,如果需要返回结果给调用者,需要在Activity结束前调用setResult方法来设置结果码resultCode和数据Intent。如果没有正确设置setResult方法,可能会导致resultCode始终为零。
  4. Activity被销毁或重建:如果启动的Activity在后台被系统销毁或由于配置变化(如屏幕旋转)而重新创建,可能会导致onActivityResult方法不被调用。在这种情况下,可以考虑使用ViewModel或保存InstanceState来保存数据,并在Activity重新创建后恢复数据。

综上所述,如果方法onActivityResult不会被调用,并且在调用resultCode时始终为零,可以检查Activity的启动模式、requestCode的设置、setResult方法的调用以及Activity的销毁和重建情况。如果问题仍然存在,可能需要进一步调试和排查代码逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android基础】利用Intent在Activity之间传递数据

Activity并且在它退出的时候收到一个返回结果。...Integer的变量作为启动参数,当启动的那个Activity退出这个参数会被作为回调函数的一个参数,用来区分返回结果,也就是说你启动Activity传递的参数(requestCode)和返回结果的那个参数...Activity窗口闪烁; 接收返回结果: 当startActivityForResult()启动的Activity完成任务退出,系统会回调你调用Activity的onActivityResult...()方法,这个方法有三个参数: resquestCode : 启动Activity传递的requestCode; resultCode: 表示调用成功或者失败的变量,值下面二者之一; /** Standard...: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if

1.5K60
  • Activity

    ()中获取到取得的图片 /** * * @param requestCode 启动的 requestCode * @param resultCode 跳转的activity给的 * @param...data 跳转的activity给的 返回的数据 */ @Override protected void onActivityResult(int requestCode, int resultCode..., Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode== 50...Activity会被压入返回栈,如果内存不够就会被销毁 ,当Activity被销毁后其中的数据当然就没了,如果需要保留这些数据可调用 方法 onSaveInstanceState()方法 @Override...;这里可以进行一些释放资源的操作 三种阶段 完整生命周期: 从调用的第一个方法 onCreate() 到最后调用一个的方法onDestroy() ,在onCreate()方法中可以进行一些全局的配置,UI

    94660

    Android开发新手——第三方遇到的坑

    这是我的第一篇博客,同时我也和标题一样,我也是菜鸟,我一开始做第三方的分享和登录,遇到了很多坑,但是在网上查询了很多,都是些很碎的知识点,或者是没有解释的很清楚,或者就是没有吧,也许你们找到了,是我眼瞎...同时文档也说了,qq分享呢也必须要带上图片,不然会分享失败 注意: 最后在分享所在的Activity里复写onActivityResult方法,注意不可在fragment中实现,如果在fragment...中调用分享,在fragment依赖的Activity中实现,如果不实现onActivityResult方法,会导致分享或回调无法正常进行 @Override protected void onActivityResult...(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode..., data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } 然后我写完之后

    17720

    Android onActivityResult获取返回值的用法

    现有 MainActivity,当它进入到 SecondActivity 后,在 SecondActivity 中进行了某些操作然后需要将值返回给 MainActivity ,就需要用到 onActivityResult...一般来说: 显式意图:调用 Intent.setComponent() 或 Intent.setClass() 方法明确指定了组件名的 Intent 显式意图,显式意图明确指定了 Intent 应该传递给哪个组件...int类型的值,这个值要在onActivityResult()方法中和requestCode做判断的,由此来判断是启动的某个Activity。...; setResult(RESULT_CODE, intent); finish(); } 补充说明 onActivityResult() 方法中的第二个参数 resultCode...例如,调用系统图库的返回,请看代码: final int CROP_PIC_REQUESTCODE = 23; final int SELECT_PICTURE = 21; if (resultCode

    1.3K30

    Activity之间的通信

    代码分散,可读性差 封装彻底,调用方需要到EditActivity才能知道需要传递什么参数,类型是什么,key是什么 调用方需要知道EditActivity是如何返回的参数类型和key是什么才能正确解析...我们期望的是: 一个对外提供某些功能的Activity应该有足够的封装性,调用者像调用普通方法一样,一行代码即可完成调用 方法的参数列表就是调用本服务需要传递的参数(参数数量,参数类型,是否必须) 方法的返回参数就是本服务的返回结果...EditActivity的 editContent 方法 // content要编辑的内容 // editContent 即为编辑后的结果 val newContent...else { super.onActivityResult(requestCode, resultCode, data) } } /** * add current...Java 代码同样可以调用 suspend 方法调用方式如下: btnEditByCoroutine.setOnClickListener((view) -> { String content

    1.1K10

    Android Fragment 的妙用 - 优雅地申请权限和处理 onActivityResult

    ,在 onCreate 方法里面,我们调用了 setRetainInstance 方法。...第三步:调用 Fragment 的 requestPermissions 方法进行权限申请 然后看 onRequestPermissionsResult 方法 这里我们主要关注 handleEachPermissionCallBack...但实际上,这种方式会存在一些局限 onActivityResult 必须在原始 Activity 中才能接收,如果想在非 Activity 中调用startActivityForResult,那么调用和接收的地方就不在同一个地方了...(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode...其实,跟 Activity onActivityReslut 相关的,我们都可以转移到代理 Fragment 进行操作,如截屏,处理悬浮窗权限 setRetainInstance 方法,设置 true

    2.1K30

    Android 蓝牙操作详解

    1.启用蓝牙并使设备处于可发现状态        1.1 在使用BluetoothAdapter类的实例进操作之前,应启用isEnable()方法检查设备是否启用了蓝牙适配器。     ...调用onActivityResult(),可以提取主设备名称和mac地址 protected void onActivityResult(int requestCode, int resultCode...这种连接是一个阻塞调用,由于蓝牙设备发现是一个缓慢的过程,可能降低连接速率。所以,在连接其它设备之前要取消设备发现。      蓝牙套接字连接阻塞调用,只在连接成功或者连接设备发生异常才会返回。...public void run() {                     // TODO Auto-generated method stub                     // 始终取消发现...这个实例通过调用蓝牙适配器上的listenUsingRfcommWithServiceRecord()方法获得。有了这个实例我们可以通过start()方法开始监听来自远程设备的入站请求。

    1.6K90

    Android WebView调用本地相册的方法

    本文实例大家分享了Android WebView调用本地相册的具体实现方法,供大家参考,具体内容如下 首先要知道android本身的WebView是并不支持调用手机文件并上传的,其次WebView的内核在...android每次更新的时候都是不太一样的,也是够坑爹的;不过需求又不能改,H5需要调用系统相册,还好最后还是找到方法解决了,就是要重写里面的一个方法,不过这种情况也是在5.0之前有效,5.0之后就需要重写另外的一个方法...); } 值得注意的是这三种方法都是一样的,只是在不同版本下会分别调用,还有就是这个方法是重写这个WebChromeClient类里面的,别以为是我们随便写的,只是google希望我们重写这个方法罢了...); return true; } 好了,到了这一步我们的调用已经ok了,但还有一个需要的过程;跟我们普通的回调接收是一模一样的: @Override protected void onActivityResult...(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data

    2.9K10
    领券