有关startActivityForResult()和onActivityResult()之疑惑?

android_baiyuchuan 2012-04-11 04:53:52
有关startActivityForResult()和onActivityResult(),浏览了一些帖子,推荐下:
http://blog.csdn.net/IT___LaDeng/article/details/6822813
不过碰见了一个比较蛋疼的问题: 现在要求我的程序中activity A 接收 activity B的一些数据,A和B不在同一个程序中
代码
	public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
Intent intent = new Intent(TestandroidActivity.this,
androidActivity.class);

startActivityForResult(intent, 1);
break;

default:
break;
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println("onActivityResult");
System.out.println("requestCode+++++ :" +requestCode);
System.out.println("resultCode+++++ :" +resultCode );
switch (requestCode) {
case 1:
if (resultCode == 2) {
String i = data.getStringExtra("name");
textView.setText(i);
DataFile.data = i;
}
break;

default:
break;
}
}

并且将activity的启动模式设为 android:launchMode="singleInstance" (必须设为这样)
于是问题就来了···
04-11 08:03:24.090: W/ActivityManager(74): Activity is launching as a new task, so cancelling activity result.
04-11 08:03:24.109: W/WindowManager(74): Failure taking screenshot for (120x180) to layer 21010
04-11 08:03:24.140: I/System.out(906): onActivityResult
04-11 08:03:24.140: I/System.out(906): requestCode :1
04-11 08:03:24.149: I/System.out(906): resultCode :0

在startActivityForResult()执行后,onActivityResult()立马执行(跟B再无关系),并且将这次获取result的动作给取消了,resultCode = Activity.RESULT_CANCELED。 我一直以为使用startActivityForResult()的限制是只和activityB的启动模式有关的, 不知各位大神有没有解决办法呢?

...全文
418 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
深圳之光 2014-07-02
  • 打赏
  • 举报
回复
诶,我去,遇到了一样的问题 A-B B直接finish之后 A 不动了。。
android_baiyuchuan 2012-04-12
  • 打赏
  • 举报
回复
(2)那你先把A的启动模式去掉试试;Mygod!

这个我已经说了,A的启动模式是确定的,必须是android:launchMode="singleInstance";

(3)不行的话考虑用广播发回来吧;
这个正在实现···
闪电001 2012-04-12
  • 打赏
  • 举报
回复
(1)现在要求我的程序中activity A 接收 activity B的一些数据
-->应该是B的执行结果需要返回给A是吧?
-->个人感觉lanchmode不需要设置;在B结束的时候调activity.setResult(isSuccess ? Activity.RESULT_OK
: Activity.RESULT_CANCELED, activity.getIntent());

你可以把需要返回的数据放在intent=activity.getIntent()中;

(2)那你先把A的启动模式去掉试试;Mygod!

(3)不行的话考虑用广播发回来吧;
android_baiyuchuan 2012-04-11
  • 打赏
  • 举报
回复
并且将activity的启动模式设为 android:launchMode="singleInstance" (必须设为这样)
是把A的启动模式设为这样

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧