PreferenceFragment.findPreference siempre devuelve NULL

Actualmente estoy tratando de hacer un menú de configuración, que mostrará unMultiSelectListPreference, para seleccionar múltiples contactos de su lista de contactos.

En este momento, estoy recibiendo unNullPointerException, cuando intentoMultiSelectListPreference#setEntryValue(CharSequence[]) Si pongo elsetEntries En primer lugar, que se lanza la misma excepción.

He puesto un punto de interrupción, para ver paso a paso lo que sucede. Las variables se rellenan porque se almacenan.Strings, pueden contener unString "nulo", así que supongo que no falla si no hayDisplay_Name disponible o así.

Basé el findPreference en el ejemplo deesta respuesta

Alguien tiene una idea? Si necesitas más información, dímelo. ¡Gracias por leer!

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

EDITAR: Ok, hice un par de cheques más. -Hice una preferencia de prueba en mi XML y usé findPrefence para hacer que funcionara con un objeto -> devuelve NULL -He establecido mi clave de mi MultiSelectListPreference en @ string / test, puesto esto en mi string.xml, findpreference Todavía devuelve nulo.

¿Puede haber un problema con mi PreferenceFragment?

Respuestas a la pregunta(3)

Su respuesta a la pregunta