首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有调用ContentObserver onChange()。

没有调用ContentObserver onChange()。
EN

Stack Overflow用户
提问于 2014-07-10 10:38:44
回答 1查看 1.8K关注 0票数 3

我有一个ContentProvider。我在内容提供者中的update方法是:

代码语言:javascript
复制
       @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;
   }

然后,我将实现一个ContentObserverMYContentObserver

代码语言:javascript
复制
@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里,就像:

代码语言:javascript
复制
getActivity().getContentResolver().registerContentObserver(MyContentProvider.CONTENT_URI, true, myObserver);

在我的onOptionItemSelected中,点击其中一个条目,我更新如下:

代码语言:javascript
复制
getActivity().getContentResolver().update(ContactsContentProvider.CONTENT_URI, values, where, null);
EN

回答 1

Stack Overflow用户

发布于 2014-07-10 11:28:25

在您给出的示例中,您没有注册和更新相同的URI。

您正在注册以侦听MyContentProvider.CONTENT_URI uri上的更改,但您正在对ContactsContentProvider.CONTENT_URI uri进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24674416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档