我希望检测包含在ListView
中的Preference
何时被单击,以便启动Intent来管理该选择。
我会在我的布局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)
方法已过时。
1.是否有未过时的对等用法?
1.如果没有,如果我仍然使用它会怎样?
Fragments
如何帮助我以更好的方式完成任务?请查看此处:Preferences without deprecated methods。
在这里,您可以查看我的Activity所拥有的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>
快照:
在单击About(或Access Label Taxonomy)Preference
后,我想打开某种类型的intent
(也可能是视频或其他任何内容...这些名称容易引起误解)。
4条答案
按热度按时间velaa5lx1#
是否有未过时的对等用法?
如果您在API Level 11+设备上使用
PreferenceFragment
,则应在该设备上调用findPreference()
。否则,请在PreferenceActivity
上调用findPreference()
,因为您别无选择。如果没有,如果我仍然使用它会怎样?
它会起作用的。
Fragments如何帮助我更好地完成任务?
API Level 11+引入了
PreferenceFragment
作为构造PreferenceActivity
内容的另一种方法。欢迎您使用它们,但如果您仍支持较旧的设备,则不能将PreferenceFragment
用于这些设备。话虽这么说:
我希望检测ListView中包含的Preference何时被单击,以便启动Intent来管理该选择。
您不需要Java程式码即可执行此作业。请用途:
(as见JavaDocs for
PreferenceActivity
)这将在首选项UI中创建一个条目,单击该条目将启动一个具有指定
Intent
的Activity。xa9qqrwz2#
如果你使用片段,你可以在一个preferences片段的基础上使用方法“findPreference()”。
gudnpqoy3#
2018 UPDATE现在,必须在Preference片段中覆盖
onPreferenceTreeClick
方法以实现此目的。例如:myss37ts4#
也许docs链接不清楚。但是使用这个功能非常简单。例如,你可以像这样使用它作为twitter页面
它不需要任何Java代码。感谢CommonsWare!