2015-01-31 4 views
0

나는 두 개의 추가 기능을 사용하여 내 응용 프로그램에서 새 연락처 바로 가기를 만들거나 기존 항목을 편집할지 여부를 지정하는 연락처 선택 방법을 가지고 있습니다.안드로이드 연락처 선택기 의도가 항상 빈 추가 항목을 반환

문제는 내가하는 일과 관계없이 엑스트라가 항상 null 인 것으로 보이므로 액세스하려고 할 때 nullPointerException이 발생합니다.

의도 유형을 ContactsContract.Contacts.CONTENT_TYPE으로 설정하면 사용자 정의 추가 기능이 재설정되지만 의심 스럽습니다. 의도

Intent intent = new Intent(Intent.ACTION_PICK); 
       intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
       Bundle extras = new Bundle(); 
       extras.putBoolean("isEditing", isEditing); 
       extras.putLong("shortcut", shortcut.getId()); 
       intent.putExtras(extras); 
       startActivityForResult(intent, PICK_CONTACT_REQUEST); 

그리고 에서 onActivityResult를()를 따기

연락

switch (requestCode) { 
      case (PICK_CONTACT_REQUEST): 
       if (resultCode == getActivity().RESULT_OK) { 
        Uri contactData = data.getData(); 
        Bundle bundle = data.getExtras(); 
        Boolean isEditing = false; 
        long shortcutId = 0; 
        if (bundle != null) { 
         Toast.makeText(getActivity(), "Bundle Not Null", Toast.LENGTH_SHORT).show(); 
         if (bundle.containsKey("isEditing")) { 
          isEditing = bundle.getBoolean("isEditing", false); 
          Toast.makeText(getActivity(), "" + isEditing, Toast.LENGTH_SHORT).show(); 
         } 
         if (bundle.containsKey("shortcutId")) { 
          shortcutId = bundle.getLong("shortcutId", 0); 
          Toast.makeText(getActivity(), "" + shortcutId, Toast.LENGTH_SHORT).show(); 
         } 
        } 

토스트 때문에 표시되지 않습니다 : 여기에

내가 지금 뭐하는 거지입니다 번들을 찾을 수 없습니다. Intent.putExtraString("isEditing", value)을 사용하여 다른 워크 플로를 시도한 다음 intent.getStringExtra("isEditing", false) 번들로 엑스트라를 건너 뛰는 작업을 수행했지만 (아쉽게도 두 워크 플로의 차이를 이해하지 못했지만) 같은 문제에 직면했습니다.

도움을 주시면 감사하겠습니다.

답변

0

편집 : 당신이 당신의 long 값을 넣었을 때, 당신은 그래서 당신은 그럼 당신은 출시 Intent에서 Bundle 엑스트라를 얻을 수있다

long shortcutId = bundle.getLong("shortcut", 0); 

처럼 검색 할

extras.putLong("shortcut", shortcut.getId()); 

Activity입니다.

switch (requestCode) { 
    case (PICK_CONTACT_REQUEST): 
     if (resultCode == getActivity().RESULT_OK) { 
      Uri contactData = data.getData(); 
      //Here you get the intent extras 
      Bundle bundle = getIntent().getExtras(); 
      //Boolean isEditing = false; 
      //long shortcutId = 0; 
      if (bundle != null) { 
       Toast.makeText(getActivity(), "Bundle Not Null", Toast.LENGTH_SHORT).show(); 
       if (bundle.hasExtras()){ 
        boolean isEditing = bundle.getBoolean("isEditing", false);        
        long shortcutId = bundle.getLong("shortcut", 0); 
        if(isEditiong != null) 
         Toast.makeText(getActivity(), "" + isEditing, Toast.LENGTH_SHORT).show(); 
        if(shortcutId != null) 
         Toast.makeText(getActivity(), "" + shortcutId, Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }    
    } 
    break; 
}