项目中用到弹出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); //这样就行了
分享到:
相关推荐
基于RxPermissions框架思想,在使用startActivityForResult可以不重写onActivityResult回调
无需重写onActivityResult,以回调的方式拿到startActivityForResult的结果,解决了以往跳转页面和处理结果分离的痛点。 同时无需重写onActivityResult也意味着只要你可以拿到一个Activity实例,就可以通过它...
这个结果码必须为RESULT_OK,因为Activity A的onActivityResult()会依次判断结果码和请求码,只有都符合的时候,OK,我们可以从onActivityResult()的参数Intent data中获取数据啦,这个data就是Activity B中的Intent...
(2) 获取拍照结果(目前仅返回照片在sd卡上的目录, /sdcard/Android/data/包名/files/Pictures/时间戳.jpg):protected void onActivityResult(int requestCode, int resultCode, Intent data) {super....
startActivityForResult(intent, REQUEST_PICTURE_CHOOSE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK){ Uri uri...
告别onActivityResult ,用代理实现获取startActivityForResult结果以及权限检查管理的工具类
涉及:activity跳转、intent使用、startActivityForResult/onActivityResult,着重讲解通过来Application Context实现共享数据
Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的...
最近在研究jsbridge, 一直在想怎么样才能让需要startActivityForResult比如打开相机拍照这样的操作在webView中能更简单一点, 直到我发现了这篇文章 两个类,让你再也不用实现onActivityResult() 看了之后, 马上模仿...
适用于 Android 的 Disqus关于该库实现了在 Android 应用程序中使用的 Disqus API。 该库目前不完整且正在开发中,因此可能会发生变化。下载Gradle将以下内容添加到您的build.gradle : compile 'me.philio.disqus:...
Android onActivityResult和setResult方法 最近做公司项目遇到Android onActivityResult和setResult ,在应用过程中进程报错,这里有必要记录下,以免再次使用出错。 如果你想在Activity中得到新打开Activity关闭...
Activity返回参数和传值区别:传参调用startActivity(intent)执行跳转,返回参数用startActivityForResult(intent, 1)方法,还需从写onActivityResult()方法,它是负责初始化回传参数的方法。
Imaging 一款图片编辑类库,功能类似微信中图片编辑功能,其主要目标用于聊天中快速编辑图片。 包含以下主要功能: 缩放 涂鸦 文字 马赛克 ...fun onChooseImages(uri: ...override fun onActivityResult(requestCode:
使用startActivityForResult和onActivityResult的方法来启动Activity,发送数据以及接收数据返回。 使用onActivityResult中的形参,实现标准的处理流程。 代码中Tag,RequestCode,ResultCode能标记性数值,需要在...
顶部和底部include的顶部栏和底部栏后面再说。 MainActivity的界面activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
优秀的代码设计:AndroidProject 对 startActivityForResult 的设计进行了改良,使得可以直接在方法上传入监听对象,这样我们就不需要重写 onActivityResult 方法来拿到回调,另外原生的 startActivityForResult 还...
在清单文件配置权限和自定义的APPlication,安卓6.0的手机还要做额外的权限配置,方有效. * 3. 更加点击事件调用开启扫描二维码界面操作 * 4. 在自动接收跳转页面传过来的数据onActivityResult里接收扫描结果,并对...
Android 系统相机拍照后相片无法在相册中显示解决办法 目前自己使用发送广播实现了效果 public void photo() { Intent openCameraIntent = ...protected void onActivityResult(int requestCode, int resultCode,
3、最后记得在清单文件中加入调用系统相机和保存文件权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_...
Anroid6.0权限问题 apk22之后Android把一些涉及用户个人信息的权限都做了默认没有权限处理,需要用户确认才可以: 用户不需要在安装软件的时候一次性授权所有申请的权限,而是可以在软件的使用过程中再对某一项权限...