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(); 
     } 
    } 

И я regsitering это в моем OnCreate как:

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

И в моем onOptionItemSelected, по нажатию одной из пункта м обновления, как:

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

ответ

0

В приведенном вами примере вы не регистрируете и не обновляете тот же URI.

Вы регистрируетесь, чтобы прослушать изменения на uri MyContentProvider.CONTENT_URI, но вы вносите изменения в uri ContactsContentProvider.CONTENT_URI.

+0

Его просто случайно здесь. в моем коде, это точно то же самое. – Aleena

Смежные вопросы