Ich habe ein Einstellungsmenü für meine App basierend auf PreferenceFragment
erstellt und möchte von einer anderen Stelle in der App aus auf die Einstellungsdialoge zugreifen, ohne das Einstellungsmenü öffnen zu müssen.Android: Wie öffne ich einen ListPreference-Dialog von außerhalb PreferenceActivity/PreferenceFragment?
Meine Einstellungen-Menü hat dies:
und ich möchte den gleichen Dialog zeigen, wenn ich aus der Haupttätigkeit diesen Menüpunkt klicken:
Der Haupt Activity
hat einen ListFragment
, wo alle UI-Code ist. Weder ist ein PreferenceActivity
oder PreferenceFragment
.
Ich möchte nur das gleiche PreferenceFragment
Objekt aufrufen, um zum Dialog zu gelangen, sonst müsste ich benutzerdefinierten Code schreiben, um die Einstellungsänderungen manuell zu bearbeiten, was ich vermeiden möchte.
Ich dachte, das Hinzufügen der zu FragmentManager
in der Haupt Activity
würde es instanziieren, aber es scheint nicht zu funktionieren.
Von meinem Menü-Handler Code für das "Sortieren" Option:
SettingsFragment fragment = (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsActivity.FRAGMENT_TAG);
// first run case
if (fragment == null) {
fragment = SettingsFragment.newInstance(getActivity());
getFragmentManager().beginTransaction().add(fragment, SettingsActivity.FRAGMENT_TAG).commit();
}
CustomListPreference listPref = (CustomListPreference) fragment.findPreference(SettingsFragment.KEY_PREF_SORTORDER);
listPref.show(); // invokes showDialog(null)
Dieser stürzt mit einem NullPointerException
auf listPref
, die die PreferenceFragment
zeigt nicht richtig initialisiert.
Gibt es eine Möglichkeit, diesen Effekt zu erzielen, oder muss ich die Funktionalität als AlertDialog schreiben und die Änderungen der Voreinstellungen manuell handhaben?