我想检测 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)
已弃用。
- 是否有未弃用的等价物?
- 如果没有,我还是用它怎么办?
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
(也可以是视频或其他任何内容) ...名称具有误导性)。
最佳答案
Is there a non deprecated equivalent?
如果您在 API 级别 11+ 设备上使用 PreferenceFragment
,您将在其上调用 findPreference()
。否则,请在您的 PreferenceActivity
上调用 findPreference()
,因为您别无选择。
If not, what if I use it anyway?
它会起作用的。
How can Fragments help me do my task in a better way?
API Level 11+ 引入了 PreferenceFragment
作为构造 PreferenceActivity
内容的另一种方式。欢迎您使用它们,但如果您仍支持旧设备,则不能将 PreferenceFragment
用于这些设备。
话虽如此:
I want to detect when a Preference contained in a ListView gets clicked, so that I can launch an intent to manage that selection.
您不需要 Java 代码。使用:
<PreferenceScreen
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.android.com" />
</PreferenceScreen>
(如 JavaDocs for PreferenceActivity
中所见)
这将在首选项 UI 中创建一个条目,单击该条目时,将使用指定的 Intent
启动一个 Activity 。
关于java - 不推荐使用 findPreference() 方法? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11272839/