Android基础:startActivityForResult 和 onActivityResult 问题

项目中用到弹出Acitivity来获得用户输入 所以用到 onActivityResult()方法接受用户输入

奇怪问题 startActivityForResult() 后直接调用 onActivityResult()
    开发人员都知道,可以通过使用 startActivityForResult() 和 onActivityResult() 方法来传递或接收参数。
然而在项目中,还没等到被调用的 Activity 返回,onActivityResult() 就被执行了。
找了很久,终于通过小道消息得知,这与 Activity 的加载模式(launchMode)有关,该属性可以在 AndroidManifest.xml 中设置.

<activity
 android:name="SaveFileActivity"
 android:launchMode="singleTask"
 android:theme="@style/savefile"/>

原先将其设为 singleInstance,经测试,所有需要传递或接收的 Activity 不允许设置该属性,或只能设为标准模式,否则系统将在 startActivityForResult() 后直接调用 onActivityResult()。  将上面XML中的singleTask去掉就可以了

调用startActivityForResult后,onActivityResult无响应的问题
两个activity传递数据和返回数据时,请求方的onActivityResult始终无响应,通过debug调试模式也没见调用该方法。查看了各种配置和程序代码,均未发现有错误之处。后面找了很多资料,总算看到一个朋友说是调用startActivityForResult的参数问题,即调用时这样:
startActivityForResult(intent, 0);
是第二个参数的问题,该参数必须大于0才能在返回值,并激活onActivityResult方法。
我最开始是用的一个activity默认的常量:RESULT_OK,跟踪了代码后发现,该常量的值为-1,当然没法激活 onActivityResult方法了,随后随便修改为一个大于0的整数,程序即通跑成功。
startActivityForResult(intent, 1); //这样就行了

时间: 2024-12-25 18:41:38

Android基础:startActivityForResult 和 onActivityResult 问题的相关文章

Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回

一.使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Activity处理.这种带数据的意图跳转需要使用activity的onActivityResult()方法. (1)startActivityForResult(Intent intent, int requestCode);  第一个参数:一个Intent对象,用于携带将跳转至下一个界面中使用的数据

android基础知识

1. 前言 1.1. 什么是3G.4G Ÿ 第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,较之前的2G和2.5G在数据传输速度上有很大提升. Ÿ 第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,几乎可以满足人们的所有传输数据的需求. Ÿ 目前主流的3G技术标准有三种: WCDMA:全球80%以上的3G网络都是采用此种制式.中国联通运营.186 CDMA2000:目前日韩及北美使用较多.中国电信运营. 189 TD-SCDMA

Android 面试题总结之Android 基础(一)

Android 面试题总结之Android 基础(一) 转眼间毕业好久了,写程序也很久了,从高中就一直写到现在好多年了啊,学习了很多东西,把之前整理的资料和知识点慢慢分享出来.这里主要总结Android可能出的面试的题目比较全面\详细,持久更新,也欢迎大家补充,纠正,批评. Android四大组件简介 请简要介绍Android的四大组件. 答案:Android系统有四种组件,这四种组件构成了Android应用的框架,然后由Intent联系这四种组件. Activity用来显示Android的程序

Android基础-06

Android基础-06 Activity页面跳转和数据传递 01_AndroidManifest文件中的几个细节 在Android应用程序中一个activity就对应了一个界面. 结论: 1.一个应用程序可以有多个桌面图标: 2.创建快捷图标的方法: <intent-filter> //main 应用程序的入口 <action android:name="android.intent.action.MAIN" /> //LAUNCHER 启动器 <cat

Android基础-10

Android基础-10 多媒体编程 图片.音乐.视频等: 多媒体:多种综合: 01_计算机表示图形的形式 .jpg 36.4 KB 255*340像素,位深度24. jpg这种工业图形的压缩算法,类似rar,把人言无法识别的颜色值压缩掉了,会使用相邻空间内的颜色表示同一种颜色.文件体积变小,失真. .png 203 KB 255*340像素,位深度32. png这种工业图形的压缩算法,使用类似map的数据结构来存储图形的数据.图片体积变小,不会失真. .bmp 255 KB 255*340像素

简化Android的startActivityForResult调用

一个是解决在onActivityResult 中判断requestCode的问题,第二个是让调用代码的地方就知道我是如何处理对方activity的返回的. 首先我们有一个ResultActivityAdaptor,这个就封装了我的主要的逻辑 public class ResultActivityAdaptor { /** * 起始requestCode,用于兼容有一些老的逻辑,不让request code冲突 */ private final static int REQUEST_CODE_ST

Android基础入门教程——10.14 Android GPS初涉

Android基础入门教程--10.14 Android GPS初涉 标签(空格分隔): Android基础入门教程 本节引言: 说到GPS这个名词,相信大家都不陌生,GPS全球定位技术嘛,嗯,Android中定位的方式 一般有这四种:GPS定位,WIFI定准,基站定位,AGPS定位(基站+GPS): 本系列教程只讲解GPS定位的基本使用!GPS是通过与卫星交互来获取设备当前的经纬度,准确 度较高,但也有一些缺点,最大的缺点就是:室内几乎无法使用-需要收到4颗卫星或以上 信号才能保证GPS的准确

Android基础入门教程——4.1.1 Activity初学乍练

Android基础入门教程--4.1.1 Activity初学乍练 标签(空格分隔): Android基础入门教程 本节引言: 本节开始讲解Android的四大组件之一的Activity(活动),先来看下官方对于Activity的介绍: PS:官网文档:Activity 介绍如下: 大概意思: Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个

Android基础篇之Android快速入门--你必须要知道的基础

Android快速入门 1. 搭建开发环境 >解压压缩文件,得到:①Android SDK   (类似于JDK)② Eclipse  ③ADT >配置两个path环境变量:D:\adt-bundle-windows-x86\sdk\platform-tools:D:\adt-bundle-windows-x86\sdk\tools >配置基本的Eclipse的设置: 调整字体大小,字符集,配置android sdk的位置 >创建模拟器: 2. 创建第一个Android项目: Hel