调用startActivityForResult后直接调用onActivityResult

2024-09-02 21:32

本文主要是介绍调用startActivityForResult后直接调用onActivityResult,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

人员都知道,可以经由过程应用 startActivityForResult() 和 onActivityResult() 办法来传递或接管参数。
然而在“轻听”项目中,还没比及被调用的 Activity 返回,onActivityResult() 就被履行了。
找了好久,终于经由过程小道消息得知,这与 Activity 的加载模式(launchMode)有关,该属性可以在 AndroidManifest.xml 中设置。
本来将其设为 singleInstance,经测试,所有须要传递或接管的 Activity 不容许设置该属性,或只能设为标准模式,不然体系将在 startActivityForResult() 后直接调用 onActivityResult()。

调用startActivityForResult后,onActivityResult无响应的题目
两个activity传递数据和返回数据时,恳求方的onActivityResult始终无响应,经由过程debug调试模式也没见调用该办法。查看了各类设备和法度代码,均未发明有错误之处。后面找了很多材料,总算看到一个伴侣说是调用startActivityForResult的参数题目,即调用时如许:
startActivityForResult(intent, 0);
是第二个参数的题目,该参数必须大于0才干在返回值,并激活onActivityResult办法。
我最开端是用的一个activity默认的常量:RESULT_OK,跟踪了代码后发明,该常量的值为-1,当然没法激活 onActivityResult办法了,随后随便批改为一个大于0的整数,法度即通跑成功。
startActivityForResult(intent, 1); //如许就行了

1.startActivityForResult(Intent intent, Int requestCode);

2.setResut(int resultCode, Intent intent);

3.onActivityResult(int requestCode, int resultCode, Intent intent);

重视事项:

1.比来应用startActivityForResult,失足,跟踪后发明activity并没有被启动,而是直接履行 onActivityResult。后查看日记发明

“05-19 02:11:19.822: WARN/ActivityManager(67): Activity is launching as a new task, so cancelling activity result.”

本来是我把要启动的activity的launchmode设置成singleTask了。

把目标activity的launchmode去掉,正确。

总结:目标activity的launchmode不克不及设置成singleTask。

2.requestCode值>=0,不然,startActivityForResult就变成了 startactivity

从SDK我们可以看到如下深奥的解释:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
The other modes — singleTask and singleInstance — are not appropriate for most applications, since they result in an interaction model that is likely to be unfamiliar to users and is very different from most other applications.

从柯元旦的《Android 内核剖析》的第十章“Ams内部原理“10.1.3中有这样的一段话:请注意:SINGLE_TASK标识以及SINGLE_INSTANCE两个标识必须在r.result==0的条件中,即这两个标识只能用在startActivity()的方法中,而不能使用在startActivityForResult方法中。因为从Task的角度看,Android认为不同Task之间的Activity是不能传递数据的,所以不能使用NEW_TASK标识,但还是要调用forResult方法。

注:自己不懂了,花了时间了,但是没有想到解决方法,那就去问前辈,问别人。或许这是个坑。别人一下子就知道了为什么。
因为这个坑,没有必要画时间去再去平一遍。
懂得问。懂得借助他人的力量。

这篇关于调用startActivityForResult后直接调用onActivityResult的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131123

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

React 笔记 父子组件传值 | 父组件调用子组件数据 | defaultProps | propsType合法性验证

1.通过props实现父组件像子组件传值 、方法、甚至整个父组件 传递整个父组件则   [变量名]={this} import Header from "./Header"render(){return(<Header msg={"我是props传递的数据"}/>)} import React,{Component} from "react";class Header extends

java的一些简单调用!

四、context:component-scan     <!-- 对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->     <context:component-scan base-package="com.haso.bscsserver">     <!-- 允许定义过滤器将基包下的某些类纳入或排除     <context:include-filter