В моем файле preferences.xml есть такой элемент предпочтений:
<Preference android:title="About" />
Я хочу назначить onClick
событие, поэтому, если пользователь щелкнет по нему, я смогу открыть новый Intent
или браузер. Я пытался сделать это так же, как с кнопками, но, похоже, это не сработало.
java
android
android-preferences
Бадр Хари
источник
источник
onPostCreate
будет работать, потому что это слишком рано (Nullpointer-Exception). Любая помощь приветствуетсяfindPreference
устарела.PreferenceActivity.findPreference
устарела. Однако в документации говорится: «[T] его функциональные возможности теперь должны быть найдены в новом классе PreferenceFragment. Если вы используете PreferenceActivity в его старом режиме, там документация применяется к устаревшим API здесь.» ИPreferenceFragment.findPreference
не является устаревшим (в отношении API уровень 23, актуален на момент написания). Итак,findPreference
сам по себе не является устаревшим; это прямое использованиеPreferenceActivity
не рекомендуется. Google хочет, чтобы мыPreferenceFragment
вместо этого перешли, а не бросилиfindPreference
.onPreferenceClick
, верните,true
если щелчок был обработан иначеfalse
.для запуска сайта:
для запуска определенного действия:
вы также можете использовать "android: mimetype" для установки типа mimetype.
источник
intent-filter
в манифесте дляSomeActivity
, потому что я получаюActivityNotFoundException
:(Вам нужно использовать событие onPreferenceTreeClick.
Например, см. Http://www.javased.com/index.php?source_dir=platform_packages_apps_phone/src/com/android/phone/MobileNetworkSettings.java.
источник
2018+ ОБНОВЛЕНИЕ Сегодня этот
findPreference
метод не используется. Итак, чтобы добиться этого, просто переопределитеonPreferenceTreeClick
метод во фрагменте предпочтений. Например:Кроме того, если вам нужно обработать щелчок внутри определенного элемента предпочтения (например,
ListPreference
), вы должны зарегистрироватьsetOnPreferenceChangeListener
внутриonCreate
методаMySettingsFragment
:источник
onPreferenceClick
иonPreferenceTreeClick
?Продолжение ответа @jason gilbert
Я использую targetSdkVersion 25 , и его ответ не сработал, мне пришлось обернуть тег намерения тегом предпочтений. Пример:
источник