`
xumingrencai
  • 浏览: 1177218 次
文章分类
社区版块
存档分类
最新评论

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); //这样就行了

分享到:
评论

相关推荐

    Android-基于RxPermissions框架思想在使用startActivityForResult可以不重写onActivityResult回调

    基于RxPermissions框架思想,在使用startActivityForResult可以不重写onActivityResult回调

    Android代码-AvoidOnResult

    无需重写onActivityResult,以回调的方式拿到startActivityForResult的结果,解决了以往跳转页面和处理结果分离的痛点。 同时无需重写onActivityResult也意味着只要你可以拿到一个Activity实例,就可以通过它...

    Android OnActivityResultDemo

    这个结果码必须为RESULT_OK,因为Activity A的onActivityResult()会依次判断结果码和请求码,只有都符合的时候,OK,我们可以从onActivityResult()的参数Intent data中获取数据啦,这个data就是Activity B中的Intent...

    EasyCameraExt:自定义相机,拍照后获得图片所在sd卡路径(sdcardAndroiddata包名filesPictures时间戳.jpg)

    (2) 获取拍照结果(目前仅返回照片在sd卡上的目录, /sdcard/Android/data/包名/files/Pictures/时间戳.jpg):protected void onActivityResult(int requestCode, int resultCode, Intent data) {super....

    Android实现图片自动轮换

    startActivityForResult(intent, REQUEST_PICTURE_CHOOSE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK){ Uri uri...

    告别onActivityResult 工具类DEMO

    告别onActivityResult ,用代理实现获取startActivityForResult结果以及权限检查管理的工具类

    android activity跳转 Application Context实现共享数据

    涉及:activity跳转、intent使用、startActivityForResult/onActivityResult,着重讲解通过来Application Context实现共享数据

    Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法

    Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的...

    Android巧用Fragment解耦onActivityResult详解

    最近在研究jsbridge, 一直在想怎么样才能让需要startActivityForResult比如打开相机拍照这样的操作在webView中能更简单一点, 直到我发现了这篇文章 两个类,让你再也不用实现onActivityResult() 看了之后, 马上模仿...

    disqus-android:适用于 Android 的 Disqus 库

    适用于 Android 的 Disqus关于该库实现了在 Android 应用程序中使用的 Disqus API。 该库目前不完整且正在开发中,因此可能会发生变化。下载Gradle将以下内容添加到您的build.gradle : compile 'me.philio.disqus:...

    Android onActivityResult和setResult方法详解及使用

    Android onActivityResult和setResult方法  最近做公司项目遇到Android onActivityResult和setResult ,在应用过程中进程报错,这里有必要记录下,以免再次使用出错。 如果你想在Activity中得到新打开Activity关闭...

    Android4.0入门之Activity返回参数

    Activity返回参数和传值区别:传参调用startActivity(intent)执行跳转,返回参数用startActivityForResult(intent, 1)方法,还需从写onActivityResult()方法,它是负责初始化回传参数的方法。

    Android代码-Imaging

    Imaging 一款图片编辑类库,功能类似微信中图片编辑功能,其主要目标用于聊天中快速编辑图片。 包含以下主要功能: 缩放 涂鸦 文字 马赛克 ...fun onChooseImages(uri: ...override fun onActivityResult(requestCode:

    安卓应用之Activity数据传递

    使用startActivityForResult和onActivityResult的方法来启动Activity,发送数据以及接收数据返回。 使用onActivityResult中的形参,实现标准的处理流程。 代码中Tag,RequestCode,ResultCode能标记性数值,需要在...

    高仿微信界面

    顶部和底部include的顶部栏和底部栏后面再说。 MainActivity的界面activity_main.xml: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

    轮子哥安卓开发框架,非常好用

    优秀的代码设计:AndroidProject 对 startActivityForResult 的设计进行了改良,使得可以直接在方法上传入监听对象,这样我们就不需要重写 onActivityResult 方法来拿到回调,另外原生的 startActivityForResult 还...

    安卓zxing 代码demo

    在清单文件配置权限和自定义的APPlication,安卓6.0的手机还要做额外的权限配置,方有效. * 3. 更加点击事件调用开启扫描二维码界面操作 * 4. 在自动接收跳转页面传过来的数据onActivityResult里接收扫描结果,并对...

    Android 系统相机拍照后相片无法在相册中显示解决办法

    Android 系统相机拍照后相片无法在相册中显示解决办法 目前自己使用发送广播实现了效果  public void photo() { Intent openCameraIntent = ...protected void onActivityResult(int requestCode, int resultCode,

    android 调用相机显示拍摄后的图片

    3、最后记得在清单文件中加入调用系统相机和保存文件权限 &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/&gt; &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_...

    Android6.0权限问题解决

    Anroid6.0权限问题 apk22之后Android把一些涉及用户个人信息的权限都做了默认没有权限处理,需要用户确认才可以: 用户不需要在安装软件的时候一次性授权所有申请的权限,而是可以在软件的使用过程中再对某一项权限...

Global site tag (gtag.js) - Google Analytics