Android:onActivityResult()不行

时间:2011-05-20 09:41:32

标签: android android-activity

我正在尝试以简单的列表形式通过默认联系人应用程序呼叫联系人。完成后,用户按下后退按钮,应用程序应该获取联系人的名称,但不知何故活动结果 - resultCode - 现在可以,所以它无法查询任何内容;当我尝试这样做但结果不是 Activity.RESULT_OK 时,它表示作为 onActivityResult()参数的意图具有空值= 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;
        }     
    }

1 个答案:

答案 0 :(得分:0)

我想,当用户没有选择任何联系人时,Intent data中的值将返回为空并且您在代码中使用data

 Uri contactData = data.getData();

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