PreferenceFragment.findPreference gibt immer NULL zurück

Ich versuche gerade, ein Einstellungsmenü zu erstellen, in dem ein angezeigt wirdMultiSelectListPreference, um mehrere Kontakte aus Ihrer Kontaktliste auszuwählen.

In diesem Moment erhalte ich eineNullPointerExceptionwenn ich es versucheMultiSelectListPreference#setEntryValue(CharSequence[]) Wenn ich das legesetEntries Erstens wirft dieser die gleiche Ausnahme.

Ich habe einen Haltepunkt gesetzt, um Schritt für Schritt zu sehen, was passiert. Die Variablen werden gefüllt, weil sie gespeichert werdenStringsSie können aString "null", also denke ich, dass es nicht scheitert, wenn es keine gibtDisplay_Name verfügbar oder so.

Ich habe den findPreference am Beispiel vondiese Antwort

Hat jemand eine Idee? Wenn Sie weitere Informationen benötigen, sagen Sie es mir. Danke fürs Lesen!

package be.wdk.sendtowork;contactNumberArray

import android.database.Cursor;
import android.os.Bundle;
import android.preference.MultiSelectListPreference;
import android.preference.PreferenceFragment;
import android.provider.ContactsContract;
import android.util.Log;
import android.widget.Toast;

public class PreferenceClass extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Integer countContacts = 0;

        String[] projection = new String[]{
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.CommonDataKinds.Phone.PHOTO_URI
        };

        String selection = ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER;
        String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
        try {
            Cursor c1 = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, selection, null, sortOrder);
            c1.moveToFirst();
            Integer c1columncount = c1.getColumnCount();
            Integer c1count = c1.getCount();
            Toast toastje = Toast.makeText(getActivity(), c1columncount.toString() + " - " + c1count.toString(), Toast.LENGTH_SHORT);
            toastje.show();

            CharSequence[] contactNameArray = new CharSequence[c1count], contactNumberArray = new CharSequence[c1count];
            MultiSelectListPreference mslp = (MultiSelectListPreference) findPreference("contactList");
            do {
                contactNameArray[countContacts] = c1.getString(0) + " - " + c1.getString(2);
                contactNumberArray[countContacts] = c1.getString(1);
                countContacts += 1;
            } while(c1.moveToNext());

            mslp.setEntryValues(contactNumberArray); //<- line that throws the error
            mslp.setEntries(contactNameArray);
            addPreferencesFromResource(R.xml.preferences);
        } 
        catch (Exception e) {
            Log.v("TAG", " " + e.toString());
            e.getMessage();
        }
    }
}

BEARBEITEN: Ok, ich habe noch ein paar Checks gemacht. -Ich habe eine Testeinstellung in meinem XML-Code festgelegt und mit findPrefence ein Objekt erstellt, mit dem gearbeitet werden soll -> gibt NULL zurück -Ich habe meinen Schlüssel für MultiSelectListPreference auf @ string / test gesetzt und dies in meine Datei strings.xml, findpreference, eingefügt gibt immer noch Null zurück.

Kann es ein Problem mit meinem PreferenceFragment geben?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage