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

startActivityForResult似乎没有调用onActivityResult

如果你在 Android 中使用 startActivityForResult() 方法启动一个活动,并且没有调用 onActivityResult() 方法来处理返回结果,可能有几个原因导致这种情况发生:

  1. 检查请求代码(requestCode)是否正确:在调用 startActivityForResult() 时,你需要传递一个请求代码作为参数。在 onActivityResult() 中,你需要检查返回结果的请求代码是否与你发送请求时的代码匹配。如果不匹配,onActivityResult() 将不会被调用。
  2. 确保在活动中正确设置返回结果:在你的子活动(被启动的活动)中,你需要使用 setResult() 方法设置返回结果。确保你在子活动中正确设置了结果代码(RESULT_OK 或 RESULT_CANCELED)以及任何需要传递的数据。
  3. 检查是否在正确的活动中调用 onActivityResult()onActivityResult() 方法应该在启动子活动的父活动中被调用。确保你在正确的活动中实现了 onActivityResult() 方法,并且没有在其他地方调用它。
  4. 检查活动的启动模式:某些活动的启动模式(如 singleInstancesingleTask)可能会影响 onActivityResult() 的调用。确保你的活动的启动模式与你的预期行为相匹配。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Fragment中调用startActivityForResult的那些坑

调用的几种方式 用getActivity方法发起调用,只有父Activity的onActivityResult调用,Fragment中的onActivityResult不会被调用 直接发起startActivityForResult...源码分析 直接调用startActivityForResult (1)发起startActivityForResult调用 这种情况会直接调用到Fragment的startActivityForResult...(),否则Fragment中的onActivityResult方法就没有办法回调到了。...以及监听onActivityResult是很常见的一种应用方式,但是稍不注意就会掉到坑里,比如因为Activity的onActivityResult方法没有调用super.onActivityResult...直接在Fragment中调用startActivityForResult方法 2.如果父Activity中覆写了onActivityResult,则需要确保调用了super.onActivityResult

1.9K10

startActivityForResult被标记为弃用后,如何优雅的启动Activity?

可以明显的看到,在androidx.activity1.2.0-alpha04时开始,Android中这位你调用过无数次的startActivityForResultonActivityResult,...其实不然,因为上面代码的需求是一个单一的回调,所以看着似乎startActivityForResult更便于维护和使用。...但倘若编写一个稍复杂的页面,需要同时请求相册、需要在其它Activity选择数据并回调、需要判断权限等等时,继续使用startActivityForResult,会导致onActivityResult里掺杂各种嵌套及判断...所以Activity Result API里,我的刚需似乎只是一个startActivityForResult那么简单, 那有更便捷的方法吗?...原因二,是若想自己调用,使用其实也很简单,只需调用Android提供的这些默认协定即可。

2.1K20

onActivityResult!你好,Activity Results API!

方法来启动下一个Activity,然后通过onActivityResult来接收返回的结果,代码如下: 调用startActivityForResult方法启动 startActivityForResult...随着应用的扩展,onActivityResult回调方法各种嵌套、耦合严重、难以维护。 最常见的场景就是调用系统相机相册获取照片了。...:1.3.0-alpha02 中,已经废弃了startActivityForResultonActivityResult方法。...确实,但这并没有完!!! 预定义的Contract 大伙都看出来,新的Activity Results API使用起来好像有点麻烦,每次都得定义Contract。...另外,startActivityForResultonActivityResult已经被废弃,官方也是强烈建议使用这种方式来进行数据传递并获取Activity返回的数据。

1.5K40

onActivityResult!你好,Activity Results API!

方法来启动下一个Activity,然后通过onActivityResult来接收返回的结果,代码如下: 调用startActivityForResult方法启动 startActivityForResult...随着应用的扩展,onActivityResult回调方法各种嵌套、耦合严重、难以维护。 最常见的场景就是调用系统相机相册获取照片了。...:1.3.0-alpha02 中,已经废弃了startActivityForResultonActivityResult方法。...确实,但这并没有完!!! 预定义的Contract 大伙都看出来,新的Activity Results API使用起来好像有点麻烦,每次都得定义Contract。...另外,startActivityForResultonActivityResult已经被废弃,官方也是强烈建议使用这种方式来进行数据传递并获取Activity返回的数据。

1.7K20

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

注意:在调用startActivityForResult()时你可以利用显示Intent或者隐式Intent,但是在你能够利用显式Intent的时候尽量利用显式Intent,这样能够保证返回的结果是你期待的正确结果...启动一个Activity: 在用startActivityForResult()来启动一个Activity时,Intent的写法与startActivity()是一样的,没有任何区别,只是你需要传递一个额外的...下面是一个调用startActivityForResult()获取联系人的例子: static final int PICK_CONTACT_REQUEST = 1; // The request...startActivityForResult()方法,如果你在onResume之前调用了,那么所在的Activity就无法显示,直到启动的那个Activity退出然后返回结果,这是为了避免在重新定向到另外...Activity时窗口闪烁; 接收返回结果: 当startActivityForResult()启动的Activity完成任务退出时,系统会回调你调用Activity的onActivityResult

1.5K60

Android-使用Intent传递数据

("extra_data"); Log.d("SecondActivity",data); 首先通过getIntent()方法获取到用于启动SecondActivity的Intent, 然后调用...StartActivityForResult()接收两个参数, 第一个参数还是Intent, 第二个参数是请求码,用于在回调中判断数据的来源。...setResult(RESULT_OK,intent); finish(); 还是构建了一个Intent,不过这个Intent仅仅用于传递数据而已, 没有指定任何...由于使用的是startActivityForResult()方法启动的SecondActivity的, 在被销毁之后会回调上一个活动的onActivityResult()方法,因此需要重写这个方法:...由于在一个活动中有可能调用startActivityForResult()方法启动很多不同的活动, 每一个活动返回的数据都会回调onActivityResult()方法,因此需要先判断requestCode

1.2K30

Activity Result API详解,是时候放弃startActivityForResult了「建议收藏」

我个人的观点是,startActivityForResult()方法并没有什么致命的问题,只是Activity Result API在易用性和接口统一性方面都做得更好。...startActivityForResult()方法去向SecondActivity请求数据,然后在onActivityResult()方法中去解析SecondActivity返回的结果。...我们完全移除了对onActivityResult()方法的重写,而是调用registerForActivityResult()方法来注册一个对Activity结果的监听。...这样我们就不需要再调用startActivityForResult()方法了,而是直接调用launch()方法,并把Intent传入即可。 这两种写法到底孰优孰劣呢?...但是我们在调用startActivityForResult()方法时,除了传入Intent之外,还需要再传入一个requestCode,用于在多个任务之间进行区分。

76930

Activity Result API详解,是时候放弃startActivityForResult

我个人的观点是,startActivityForResult()方法并没有什么致命的问题,只是Activity Result API在易用性和接口统一性方面都做得更好。...startActivityForResult()方法去向SecondActivity请求数据,然后在onActivityResult()方法中去解析SecondActivity返回的结果。...我们完全移除了对onActivityResult()方法的重写,而是调用registerForActivityResult()方法来注册一个对Activity结果的监听。...这样我们就不需要再调用startActivityForResult()方法了,而是直接调用launch()方法,并把Intent传入即可。 这两种写法到底孰优孰劣呢?...但是我们在调用startActivityForResult()方法时,除了传入Intent之外,还需要再传入一个requestCode,用于在多个任务之间进行区分。

1.6K30
领券