PreferenceFragment.findPreference sempre retorna NULL

Atualmente estou tentando fazer um menu de configurações, que mostrará umMultiSelectListPreference, para selecionar vários contatos da sua lista de contatos.

Neste momento, estou recebendo umNullPointerException, quando eu tentoMultiSelectListPreference#setEntryValue(CharSequence[]) Se eu colocar osetEntries primeiro, aquele lança a mesma exceção.

Eu coloquei um ponto de interrupção, para ver passo a passo o que acontece. As variáveis ​​são preenchidas porque elas armazenamStrings, eles podem conter umString "null", então eu acho que não falhará se não houverDisplay_Name disponível ou assim.

Eu baseei o findPreference no exemplo deesta resposta

Alguém tem uma ideia? Se você precisar de mais informações, me diga. Obrigado pela leitura!

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, eu fiz mais algumas verificações. -Eu fiz uma preferência de teste no meu XML e usei o findPrefence para fazer um objeto dele funcionar com -> retorna NULL -Eu defini minha chave do meu MultiSelectListPreference para @ string / test, coloquei isso no meu strings.xml, findpreference ainda retorna Nulo.

Pode haver algum problema com o PreferenceFragment?

questionAnswers(3)

yourAnswerToTheQuestion