读书人

starActivityforResult()函数的调用与

发布时间: 2012-07-29 15:26:14 作者: rapoo

starActivityforResult()函数的调用与响应流程问题
我的APP中要牵扯到调用通信录,选择某个联系人获取其name.phoneNum这两个数据。

在我当前的Activity中:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, REQUEST_CONTACT);

同时Override onActivityResult(int requestCode, int resultCode, Intent data)在里边实现响应:

super.onActivityResult(requestCode, resultCode, data);
。。。。。
Log.d( "HH ", "requestCode = "+requestCode);
。。。。
Log.d( "HH ", "resultCode = "+resultCode);
。。。。
OK!可以调用通信录。

但是问题来了:在显示通信录的同时,就看到了Log信息:
requestCode = 1;
resultCode = 0;
就是说这时候没有对通信录进行pick_up操作,就已经返回结果了,但是还停留在电话本界面,是没有选择具体的item。

当对具体一个item 点击后,返回APP,但是,这时候没有响应onActivityResult(),只是返回了,log信息没有。

看到很多的介绍,都是说在pick_up操作以后才返回APP,同时响应onActivityResult()。
但是现在有点矛盾啊。

麻烦各位帮忙想一下,谢谢


[解决办法]
RESULT_CANCEL = 0;
RESULT_OK = 1;
你要在code中判断:
if (requestCode == REQUEST_CONTACT && resultCode ==RESULT_OK) {
//do what you want
}

读书人网 >Android

热点推荐