Android:onActivityResult()不正常

Android:onActivityResult()不正常,android,android-activity,Android,Android Activity,我试图通过默认的联系人应用程序以简单的列表形式调用联系人。完成后,用户按下后退按钮,应用程序应该获得联系人的姓名,但不知何故,活动结果-结果代码-现在是正常的,因此它无法查询任何内容;虽然结果不是Activity.result_OK,但当我尝试这样做时,它说作为onActivityResult参数的intent的值为null=NullPointerException 如果有人有办法解决这个问题,你能帮我吗?下面是我的代码 @Override public void onCrea

我试图通过默认的联系人应用程序以简单的列表形式调用联系人。完成后,用户按下后退按钮,应用程序应该获得联系人的姓名,但不知何故,活动结果-结果代码-现在是正常的,因此它无法查询任何内容;虽然结果不是Activity.result_OK,但当我尝试这样做时,它说作为onActivityResult参数的intent的值为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;
        }     
    }

我猜,当用户未选择任何联系人时,Intent data中的值返回为null,并且您正在代码中使用数据:

 Uri contactData = data.getData();

这就是它导致空指针异常的原因。如果不是这样,请粘贴您的异常日志

谢谢你!我明白了,因为我使用了ACTION_PICK,所以我必须在列表中选择一项。