Android: cómo abrir un cuadro de diálogo ListPreference desde fuera de PreferenceActivity / PreferenceFragment?
He creado un menú de configuración para mi aplicación basado en PreferenceFragment
y me gustaría acceder a los cuadros de diálogo de configuración desde cualquier lugar de la aplicación sin tener que abrir el menú de configuración.
Mi menú de configuración tiene esto:
- Android: PreferenceFragment sólo muestra primera preferencia
- El tamaño de fuente de título de preferencia personalizada es mayor que la preferencia estándar en android 5
- EditTextPreference hace que Inflate Exception
- Restablecer valores predeterminados de Preferencia
- ¿Cómo puede una PreferenciaActividad utilizar un archivo de preferencias personalizadas
Y quiero mostrar el mismo diálogo cuando hago clic en este elemento de menú de la actividad principal:
La Activity
principal tiene un ListFragment
que es donde está todo el código de manejo de UI. Tampoco es una PreferenceActivity
o PreferenceFragment
.
Sólo quiero invocar el mismo objeto PreferenceFragment
para llegar al diálogo, de lo contrario tendría que escribir código personalizado para manejar los cambios de preferencia manualmente, que me gustaría evitar.
Pensé que agregar el PreferenceFragment
al FragmentManager
en la Activity
principal lo instanciaría correctamente, pero no parece funcionar.
Desde el código de mi manejador de menús para la opción "Ordenar":
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)
Esto se bloquea con una NullPointerException
en listPref
, que muestra que el PreferenceFragment
no se inicializó correctamente.
¿Hay alguna manera de lograr este efecto, o tengo que escribir la funcionalidad como un AlertDialog y manejar manualmente los cambios de preferencia?
- Establecer la fuente personalizada para el texto en PreferenceScreen
- ¿Por qué SwitchPreference no muestra animación al cambiar de encendido a apagado y viceversa?
- PreferenceDataStore en Android O
- ¿Dónde almacenar las claves de preferencias de Android?
- ¿Hay alguna manera de hacer que SharedPreferences sea global en toda mi aplicación para Android?
- Método de actividad de preferencias obsoletas
- Cómo cambiar la tipografía de dialogMessage de EditTextPreference en Android?
- SwitchPreferences llama varias veces al método onPreferenceChange ()
Creo que tendrás que escribir esta funcionalidad tú mismo fuera de las clases de Preferencias.
Preferencia, PreferenceActivity y PreferenceFragment fueron diseñados para trabajar juntos para proporcionar un UIX consistente para aplicaciones de Android. Como tal, se recomienda utilizarlos juntos, ya que estaban destinados.
No puede replicar directamente la interfaz de usuario de PreferenceActivity o PreferenceFragment fuera de esas dos clases en una actividad regular porque la interfaz de usuario se construye a partir de objetos de preferencia y no de objetos View como Actividades regulares. Así que si usted quiere que la interfaz de usuario en particular que tendría que tratar de duplicar el uso de vistas personalizadas.
https://discussions.udacity.com/t/way-to-do-listpreference-outside-of-settings-menu/45473
- Cómo manejar correctamente startForegrounds dos notificaciones
- Anuncios de Admob que se muestran en la aplicación, pero no se muestran impresiones en la interfaz de AdMob