En mis preferencias.xml tengo un elemento de preferencia como este:
<Preference android:title="About" />
Quiero asignar un onClickevento, por lo que si el usuario hace clic en él, podría abrir un nuevo Intento un navegador. Traté de hacerlo como lo hago con los botones, pero no parece funcionar.
java
android
android-preferences
Badr Hari
fuente
fuente

onPostCreateno funcionará porque es demasiado pronto (Nullpointer-Exception). Se agradece cualquier ayudafindPreferencees obsoleto.PreferenceActivity.findPreferencees obsoleto. Sin embargo, la documentación dice "[E] sta funcionalidad ahora debería encontrarse en la nueva clase PreferenceFragment. Si está utilizando PreferenceActivity en su modo anterior, la documentación se aplica a las API obsoletas aquí", yPreferenceFragment.findPreferenceno está obsoleta (a partir de API nivel 23, actual en el momento de escribir este artículo). Entonces, enfindPreferencesí mismo no está desaprobado; es el uso directo delPreferenceActivityque está en desuso. Google quiere que nosPreferenceFragmentmudemos, no que abandonemosfindPreference.onPreferenceClick, regresetruesi el clic se manejó de otra manerafalse.para lanzar un sitio web:
para lanzar una actividad específica:
también puede usar "android: mimetype" para configurar el mimetype.
fuente
intent-filteren el manifiesto para elSomeActivity, porque estoy obteniendoActivityNotFoundException:(Debe utilizar el evento onPreferenceTreeClick.
Por ejemplo, consulte http://www.javased.com/index.php?source_dir=platform_packages_apps_phone/src/com/android/phone/MobileNetworkSettings.java
fuente
ACTUALIZACIÓN 2018+ Hoy, el
findPreferencemétodo está depurado. Entonces, para lograr esto, simplemente anule elonPreferenceTreeClickmétodo en su fragmento de Preferencia. Por ejemplo:Además, si necesita manejar un clic dentro de un elemento de preferencia particular (por ejemplo
ListPreference), debe registrarsetOnPreferenceChangeListenerelonCreatemétodo dentro delMySettingsFragment:fuente
onPreferenceClickyonPreferenceTreeClick?Un seguimiento de la respuesta de @jason gilbert
Estoy en targetSdkVersion 25 y su respuesta no funcionó, tuve que envolver la etiqueta de intención con una etiqueta de preferencia. Ejemplo:
fuente