Em minhas preferências.xml, tenho um elemento de preferência como este:
<Preference android:title="About" />
Quero atribuir um onClick
evento, então se o usuário clicar nele, eu conseguiria abrir um novo Intent
ou navegador. Tentei fazer como faço com botões, mas não pareceu funcionar.
java
android
android-preferences
Badr Hari
fonte
fonte
onPostCreate
não funcionará porque é muito cedo (Nullpointer-Exception). Qualquer ajuda é apreciadafindPreference
está obsoleto.PreferenceActivity.findPreference
está obsoleto. No entanto, a documentação diz "[E] esta funcionalidade agora deve ser encontrada na nova classe PreferenceFragment. Se você estiver usando PreferenceActivity em seu modo antigo, a documentação lá se aplica às APIs obsoletas aqui.", EPreferenceFragment.findPreference
não está obsoleto (a partir da API nível 23, atual no momento da redação). Portanto, emfindPreference
si não está obsoleto; é o uso diretoPreferenceActivity
que está obsoleto. O Google quer que mudemos paraPreferenceFragment
, não abandonemosfindPreference
.onPreferenceClick
, retornetrue
se o clique foi manipulado de outra formafalse
.para lançar um site:
para lançar uma atividade específica:
você também pode usar "android: mimetype" para definir o mimetype.
fonte
intent-filter
no manifesto deSomeActivity
, porque estou recebendoActivityNotFoundException
:(Você precisa usar o evento onPreferenceTreeClick.
Por exemplo, consulte http://www.javased.com/index.php?source_dir=platform_packages_apps_phone/src/com/android/phone/MobileNetworkSettings.java
fonte
ATUALIZAÇÃO 2018+ Hoje, o
findPreference
método está obsoleto. Então, para conseguir isso, basta substituir oonPreferenceTreeClick
método em seu fragmento de preferência. Por exemplo:Além disso, se você precisa lidar com um clique dentro de um elemento de preferência particular (por exemplo
ListPreference
), você deve registrarsetOnPreferenceChangeListener
oonCreate
método dentro doMySettingsFragment
:fonte
onPreferenceClick
eonPreferenceTreeClick
?Uma continuação da resposta de @jason gilbert
Estou na targetSdkVersion 25 e a resposta dele não funcionou. Tive de envolver a tag de intenção com uma tag de preferência. Exemplo:
fonte