我想检测 Preference
中包含的 ListView
被点击,以便我可以启动管理该选择的意图。
我会在我的布局 XML
文件中这样做:
<Preference android:title="About" android:key="myKey"></Preference>
以下是我的 java
代码:
Preference myPref = (Preference) findPreference("myKey");
myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
//open browser or intent here
}
});
但该方法 public Preference findPreference (CharSequence key)
已被弃用。
- 是否有未弃用的等效项?
- 如果没有,如果我仍然使用它怎么办?
Fragments
如何帮助我更好地完成任务?在这里查看: 没有弃用方法的首选项。
在这里您可以检查我的活动具有的 XML
布局结构,以及应用程序的快照:
XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:key="about"
android:title="@string/titleAbout"
android:summary="@string/summaryAbout"
/>
<Preference
android:key="labelTaxonomy"
android:title="@string/titleLabelTaxonomy"
android:summary="@string/summaryLabelTaxonomy"
/>
</PreferenceScreen>
快照:
单击关于(或访问标签分类法) Preference
,我想打开一个 intent
某种(也可以是视频或其他任何东西……名称具有误导性)。
原文由 Matteo 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您在 API 级别 11+ 设备上使用
PreferenceFragment
,您将在其上调用findPreference()
。否则,请在您的findPreference()
PreferenceActivity
,因为您别无选择。它会起作用。
API 级别 11+ 引入了
PreferenceFragment
作为构建 aPreferenceActivity
内容的另一种方式。欢迎您使用它们,但如果您仍在支持旧设备,则不能对这些设备使用PreferenceFragment
。话虽如此:
为此,您不需要 Java 代码。利用:
(如
PreferenceActivity
的 JavaDocs 所示)这将在首选项 UI 中创建一个条目,单击该条目将启动具有指定
Intent
的活动。