首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

有关startActivityForResult()和onActivityResult()之疑惑?解决方法

2012-04-27 
有关startActivityForResult()和onActivityResult()之疑惑?有关startActivityForResult()和onActivityResu

有关startActivityForResult()和onActivityResult()之疑惑?
有关startActivityForResult()和onActivityResult(),浏览了一些帖子,推荐下:
http://blog.csdn.net/IT___LaDeng/article/details/6822813
不过碰见了一个比较蛋疼的问题: 现在要求我的程序中activity A 接收 activity B的一些数据,A和B不在同一个程序中
代码

Java code
    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;        }    }

Java code
@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" (必须设为这样)
于是问题就来了···
Java code
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 2101004-11 08:03:24.140: I/System.out(906): onActivityResult04-11 08:03:24.140: I/System.out(906): requestCode :104-11 08:03:24.149: I/System.out(906): resultCode :0

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



[解决办法]
(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)不行的话考虑用广播发回来吧;

热点排行