【问题标题】:ContentObserver onChange() is not being called.没有调用 ContentObserver onChange()。
【发布时间】:2014-07-10 10:38:44
【问题描述】:

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

       @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

@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 中注册它:

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

在我的onOptionItemSelected 中,点击其中一项,m 更新如下:

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

【问题讨论】:

    标签: android android-contentprovider contentobserver


    【解决方案1】:

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

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

    【讨论】:

    • 这里只是偶然。在我的代码中,它完全一样。
    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多