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 eineNullPointerException
wenn 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 werdenStrings
Sie 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?