2011-05-20 44 views
0

我想通過默認聯繫人應用程序以簡單的列表形式呼叫聯繫人。完成後,用戶按下後退按鈕,應用程序應該獲得聯繫人的姓名,但不知何故活動結果 - resultCode - 現在可以,因此無法查詢任何內容;當我試圖做到這一點雖然結果不是Activity.RESULT_OK,那麼它表示意圖作爲參數onActivityResult()具有空值= NullPointerExceptionAndroid:onActivityResult()不正常

如果有人有一個想法弄清楚這一點,你會幫助我嗎?以下是我的代碼。


    @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; 
     }  
    } 

回答

0

我想,當用戶沒有選擇任何接觸Intent data值返回爲空,你在你的代碼中使用data

Uri contactData = data.getData(); 

這就是爲什麼它是導致空指針異常。如果這不是粘貼異常日誌的情況。

+0

謝謝你mudit!我看到因爲我使用了ACTION_PICK,所以我必須選擇列表中的一個項目。 – June 2011-05-20 18:22:02