En mis preferencias.xml tengo un elemento de preferencia como este:
<Preference android:title="About" />
Quiero asignar un onClick
evento, por lo que si el usuario hace clic en él, podría abrir un nuevo Intent
o un navegador. Traté de hacerlo como lo hago con los botones, pero no parece funcionar.
java
android
android-preferences
Badr Hari
fuente
fuente
onPostCreate
no funcionará porque es demasiado pronto (Nullpointer-Exception). Se agradece cualquier ayudafindPreference
es obsoleto.PreferenceActivity.findPreference
es 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.findPreference
no está obsoleta (a partir de API nivel 23, actual en el momento de escribir este artículo). Entonces, enfindPreference
sí mismo no está desaprobado; es el uso directo delPreferenceActivity
que está en desuso. Google quiere que nosPreferenceFragment
mudemos, no que abandonemosfindPreference
.onPreferenceClick
, regresetrue
si 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-filter
en 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
findPreference
método está depurado. Entonces, para lograr esto, simplemente anule elonPreferenceTreeClick
mé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 registrarsetOnPreferenceChangeListener
elonCreate
método dentro delMySettingsFragment
:fuente
onPreferenceClick
yonPreferenceTreeClick
?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