Vra

Ek probeer vir 'n verandering in die kontak databasis te luister.

So ek my contentObserver wat 'n kind klas van ContentObserver:

 private class MyContentObserver extends ContentObserver {

        public MyContentObserver() {
            super(null);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            System.out.println (" Calling onChange" );
        }

    }

MyContentObserver contentObserver = new MyContentObserver();
context.getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver);

Maar toe ek 'EditContactActivity' gebruik om die kontak databasis te verander, My onChange() nie ontslae genoem.

Was dit nuttig?

Oplossing

Ek het jou voorbeeld ontplooi as dit is, en dit werk goed.

package com.test.contentobserver;

import android.app.Activity;
import android.database.ContentObserver;
import android.os.Bundle;
import android.provider.Contacts.People;

public class TestContentObserver extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.getApplicationContext().getContentResolver().registerContentObserver (People.CONTENT_URI, true, contentObserver);
    }

    private class MyContentObserver extends ContentObserver {

        public MyContentObserver() {
            super(null);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
        }

    }

    MyContentObserver contentObserver = new MyContentObserver();

}

So, jy moet iets anders verkeerd doen.

Is jy besig om die veranderinge deur die wyser die waarnemer is geregistreer by?

Maak seker dat met die Observer funksie deliverSelfNotifications (). (Dit terug vals by verstek)

Wil jy dalk dat waarnemer funksie oorheers met iets soos:

@Override
public boolean deliverSelfNotifications() {
    return true;
    }

Maak seker dat People.CONTENT_URI verwys na korrekte waarde (android.provider.Contacts.People).

Ook, ek stel voor jy met behulp van Handler met ContentObserver, maar dit is nie wat maak jou kode verkeerd in hierdie geval.

Ander wenke

'n eenvoudige WENK oor antwoord MannyNS se.

Hier is People.CONTENT_URI afgekeur.

Kode as in plaas volg .--> ContactsContract.Contacts.CONTENT_URI

    getApplicationContext().getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, contentobserver);
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top