2014-07-10 3 views
3

나는 ContentProvider입니다. 내 콘텐츠 제공 업체에서 내 update 방법은 다음과 같습니다 ContentObserver onChange()를 호출하지 않습니다.

 @Override 
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { 
     int count = 0; 
     switch (uriMatcher.match(uri)){ 
     case CONTACT: 
     count = db.update(CONTACTS_TABLE_NAME, values, 
       selection, selectionArgs); 
     break; 
     case CONTACT_ID: 
     count = db.update(CONTACTS_TABLE_NAME, values, _ID + 
       " = " + uri.getPathSegments().get(1) + 
       (!TextUtils.isEmpty(selection) ? " AND (" + 
       selection + ')' : ""), selectionArgs); 
     break; 
     default: 
     throw new IllegalArgumentException("Unknown URI " + uri); 
     } 
     getContext().getContentResolver().notifyChange(uri, null); 
     return count; 
    } 

그때 나는 ContentObserver을 구현하고있다. MYContentObserver

@SuppressLint("NewApi") 
    public class MyObserver extends ContentObserver {   
     public MyObserver(Handler handler) { 
      super(handler);    
     } 
     @Override 
     public void onChange(boolean selfChange) { 
      List<Contact> newData; 
      if(CONTACT_TYPE == VOIP_CONTACTS){ 
       newData = ContactsManager.getVoipContacts(getActivity()); 
      }else{ 
       newData = ContactsManager.getAllContacts(getActivity()); 
      } 
      customAdapter.contacts().clear(); 
      customAdapter.contacts().addAll(newData); 
      customAdapter.notifyDataSetChanged(); 
     } 
    } 

그리고 나는 내에서 onCreate처럼 그것을 regsitering 오전 : 항목 중 하나를 클릭에, 같은 업데이트 해요,

getActivity().getContentResolver().registerContentObserver(MyContentProvider.CONTENT_URI, true, myObserver); 

그리고 내 onOptionItemSelected에 :

getActivity().getContentResolver().update(ContactsContentProvider.CONTENT_URI, values, where, null); 

답변

0

제공된 예에서는 동일한 URI를 등록 및 업데이트하지 않습니다.

MyContentProvider.CONTENT_URI uri에서 변경 사항을 수신 대기 중이지만 ContactsContentProvider.CONTENT_URI uri를 변경하려고합니다.

+0

바로 여기 있습니다. 내 코드에서는 정확히 동일합니다. – Aleena