PreferenceFragment.findPreference gibt immer NULL zurück

Ich versuche derzeit, ein Einstellungsmenü zu MultiSelectListPreference , das eine MultiSelectListPreference zeigt, um mehrere Kontakte aus deiner Kontaktliste auszuwählen.

In diesem Moment bekomme ich eine NullPointerException , wenn ich versuche, MultiSelectListPreference#setEntryValue(CharSequence[]) Wenn ich die setEntries zuerst, dass man die gleiche Ausnahme wirft.

  • Android Facebook Api Exception - remote_app_id stimmt nicht mit der gespeicherten ID überein
  • So verwenden Sie ScriptIntrinsicYuvToRGB (umwandelndes Byte yuv in Byte rgba)
  • Wie platzieren Sie "&" in XML-Strings-Datei im Android-Studio
  • Ist es möglich, die Android-Optionen Menü Hintergrund nicht durchscheinend?
  • So erstellen Sie einen App-Image-Ordner in Android-Galerie zu zeigen
  • Raster von Bildern in ScrollView
  • Ich habe einen Haltepunkt gesetzt, um Schritt für Schritt zu sehen, was passiert. Die Variablen sind gefüllt, weil sie Strings speichern, sie können einen String "null" enthalten, also denke ich, dass es nicht scheitert, wenn es keinen Display_Name gibt oder so.

    Ich habe das findPreference am Beispiel dieser Antwort

    Wer hat eine Idee? Wenn du mehr Informationen brauchst, sag 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(); } } } 

    EDIT: Ok, ich habe noch ein paar Schecks gemacht. – Ich habe eine Testpräferenz in meinem XML gemacht und die findPrefence benutzt, um einen Gegenstand von ihm zu machen, um mit zu arbeiten -> gibt NULL zurück – ich habe meinen Schlüssel meiner MultiSelectListPreference auf @ string / test gesetzt, legte dies in meine strings.xml, findpreference Immer noch Null zurück.

    Kann es ein Problem mit meinem PreferenceFragment geben?

  • Android Studio: Kann nach einer Weile keine Dateien bearbeiten
  • Android-Batterieverbrauchsprofilierung
  • Android, NoSuchFieldError beim Starten der zweiten Aktivität
  • Emulator schließt nicht Ubuntu
  • Android Fragments Grundlagen: warum? Ist das begrifflich falsch?
  • Firebase Android-Authentifizierung fehlgeschlagen: expired_token (Auth-Token ist abgelaufen)
  • 3 Solutions collect form web for “PreferenceFragment.findPreference gibt immer NULL zurück”

    Ok, ich habe gefunden, was mein Problem war.

     MultiSelectListPreference mslp = (MultiSelectListPreference) findPreference("contactList"); 

    Gibt NULL zurück, weil

     addPreferencesFromResource(R.xml.preferences); 

    Ist nicht am Anfang … also hat es meine Einstellungen noch nicht geladen.

    Sie können dies mit zu lösen

     getFragmentManager().executePendingTransactions(); 

    Vor

     findPreference(section); 

    Keine der oben genannten Lösungen für mich arbeiten. findPreference() von PreferenceFragment aufgerufen, bei dem die PreferenceFragment geladen sind und die Standardwerte gesetzt sind, gibt immer null 🙁

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.