我试图通过默认的联系人应用程序以一个简单的列表形式调用联系人。完成后,用户按后退按钮,应用程序应该得到联系人的名称,但是活动结果- Activity.RESULT_OK,resultCode-现在没有问题,所以它不能查询任何东西;当我尝试这样做时,尽管结果不是onActivityResult(),但它表示作为onActivityResult()参数的意图值为null = NullPointerException.。
如果有人想办法解决这个问题,你能帮我吗?下面是我的密码。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
displayContacts();
}
private void displayContacts(){
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case (PICK_CONTACT) :
// The problem happens here. The resultCode is not okay and it throws NullPointerException at data.getData();
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String name = c.getString(c.getColumnIndexOrThrow(Contacts.DISPLAY_NAME));
Log.d("Main", "Name: "+name); // Test: display a name on LogCat
}
}
else{
Log.e("RESULT_OK", "Error");
}
break;
}
}发布于 2011-05-20 09:45:06
我猜,当用户没有选择任何联系人时,Intent data中的值将返回为null,并且在代码中使用data:
Uri contactData = data.getData();这就是它导致nullPointer异常的原因。如果不是这种情况,请粘贴异常日志。
https://stackoverflow.com/questions/6070082
复制相似问题