首页
学习
活动
专区
工具
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.6K60
  • 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

    97960

    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); } 然后我写完之后

    18520

    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.4K30

    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

    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 蓝牙操作详解

    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.7K90

    让 Android 的 WebView 支持 type 为 file 的 input,同时支持拍照

    Android 的 WebView 组件默认是不启用 type 为 file 的 input 的,需要在代码中做一些类似 hack 的编码(因为解决问题的目标对象的方法都是加了@hide注解的)才能召唤神龙...用于在 onActivityResult 方法中识别出是执行了拍照选取的流程。...); } FILECHOOSER_RESULTCODE 用于在onActivityResult方法中识别出是执行了从已保存文件中选取图片文件的流程。...onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == FILECHOOSER_RESULTCODE...API获取uri数据的方法不同;     2、无论取没取到 uri 数据,只要 vCbFileChooser 变量不为空,都必须调用一次 onReceiveValue 方法,而且这之后要将它以及相关变量置为

    1.6K20
    领券