【Android开发】onActivityResult无执行的解决方法

对于跳转式的activity之间传值,相信有一些Android开发经验的朋友都会想到用startActivityForResult与onActivityResult来实现


假设Activity A 与 B 之间跳转传值

Intent intent=new Intent(A.this,B.class);
startActivityForResult(intent,1);//1是随便给定的requestCode


在B中执行相关操作后

setResult(resultCode,data);

B.this.finish();


就会跳转回Activity A

而A中接受B中setResult的相关结果是函数

 @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data)  
    {  
     TODO
     }
起作用的。

好吧,上面复习了一下基本的用法。但是今天我在开发的时候遇到一个问题就是,Activity B finish之后,A的onActivityResult不执行。而且还有一个奇怪的现象,我在onActivityResult里面println了一些标记出来,发现在都还未跳转到B的时候,A已经率先执行了onActivityResult。这是什么原因呢?以前都没遇到过这种情况。我分析了一下

以往成功的例子,对比一下不同,唯一的不同就是我这次是把Activity B的LaunchMode设置成了singleTask


想一想,问题的症结也许就是只这里了。首先,这种Activity 之间的跳转有返回值的方法,例如在这个情况,它的期望作用就是,A可以根据不同的返回值的Acyivity来决定相关操作,而现在要跳转的Activity设置成了singleTask,显然就把这种灵活性给限制死了,与这种方法的设计意图明显是有些违背的。


所以,要想onActivityResult能起作用,要跳转到的Activity必须要是standard的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值