In meiner Einstellungen.xml habe ich ein Präferenzelement wie das folgende:
<Preference android:title="About" />
Ich möchte ein onClick
Ereignis zuweisen. Wenn der Benutzer darauf klicken würde, könnte ich ein neues Intent
oder einen Browser öffnen . Ich habe versucht, es wie mit Knöpfen zu machen, aber das scheint nicht zu funktionieren.
java
android
android-preferences
Badr Hari
quelle
quelle
onPostCreate
funktioniert nicht, weil es zu früh ist (Nullpointer-Exception). Jede Hilfe wird geschätztfindPreference
ist veraltet.PreferenceActivity.findPreference
ist veraltet. In der Dokumentation heißt es jedoch "[T] seine Funktionalität sollte jetzt in der neuen PreferenceFragment-Klasse gefunden werden. Wenn Sie PreferenceActivity im alten Modus verwenden, gilt die Dokumentation dort für die veralteten APIs hier." UndPreferenceFragment.findPreference
ist nicht veraltet (ab API) Stufe 23, aktuell zum Zeitpunkt des Schreibens). AlsofindPreference
selbst ist nicht veraltet; es ist die direkte Verwendung,PreferenceActivity
die veraltet ist. Google möchte, dass wirPreferenceFragment
stattdessen umziehen und nicht aufgebenfindPreference
.onPreferenceClick
in zurück,true
wenn der Klick anderweitig behandelt wurdefalse
.So starten Sie eine Website:
So starten Sie eine bestimmte Aktivität:
Sie können auch "android: mimetype" verwenden , um den Mimetyp festzulegen.
quelle
intent-filter
im Manifest für die angebenSomeActivity
, weil ich bekommeActivityNotFoundException
:(Sie müssen das Ereignis onPreferenceTreeClick verwenden.
Siehe beispielsweise http://www.javased.com/index.php?source_dir=platform_packages_apps_phone/src/com/android/phone/MobileNetworkSettings.java
quelle
2018+ UPDATE Heute ist die
findPreference
Methode entzogen. Um dies zu erreichen, überschreiben Sie einfach dieonPreferenceTreeClick
Methode in Ihrem Einstellungsfragment. Beispielsweise:Wenn Sie einen Klick innerhalb eines bestimmten Einstellungselements (z. B.
ListPreference
) ausführen müssen, sollten Sie außerdemsetOnPreferenceChangeListener
dieonCreate
Methode innerhalb der folgenden Methode registrierenMySettingsFragment
:quelle
onPreferenceClick
undonPreferenceTreeClick
?Eine Fortsetzung der Antwort von @jason gilbert
Ich bin auf targetSdkVersion 25 und seine Antwort hat nicht funktioniert. Ich musste das Intent-Tag mit einem Preference-Tag versehen. Beispiel:
quelle