非弃用的findPreference()方法? – Android
我想检测一个ListView包含的Preference何时被点击,以便我可以启动一个意图来pipe理这个select。 
 我会在我的布局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如何帮助我以更好的方式完成我的任务?Chek here: 没有弃用方法的首选项 。
 在这里,您可以检查我的活动所具有的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 (也可以是video或其他任何…名称是误导性的)。 
是否有一个不赞成的等价物?
 如果您在API Level 11+设备上使用PreferenceFragment ,则可以在其上调用findPreference() 。 否则,请在您的PreferenceActivity上调用findPreference() ,因为您别无select。 
如果不是的话,如果我用它呢?
它会工作。
碎片如何帮助我更好地完成我的任务?
  API Level 11+引入了PreferenceFragment作为构造PreferenceActivity内容的另一种方式。 欢迎您使用它们,但是如果您仍然支持较旧的设备,则不能为这些设备使用PreferenceFragment 。 
话虽如此:
我想检测一个ListView中包含的偏好何时被点击,以便我可以启动一个意图来pipe理这个select。
你不需要这个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> 
  (如在PreferenceActivity的JavaDocs中所见) 
 这将在首选项UI中创build一个条目,单击该条目时,将使用指定的Intent启动一个活动。 
如果使用片段,则可以根据首选项片段使用“findPreference()”方法。
 public class CustomActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom); CustomFragment customFragment = (CustomFragment) getFragmentManager().findFragmentById(R.id.custom_fragment); EditTextPreference textPreference = (EditTextPreference) customFragment.findPreference("preference_key"); textPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { //open browser or intent here } }); } } 
也许文档链接不清楚。 但使用该function非常简单。 例如,你可以使用它作为这样的twitter页面
 <PreferenceCategory android:title="Share" > <PreferenceScreen android:title="Twitter" android:summary="Follow me at Twitter"> <intent android:action="android.intent.action.VIEW" android:data="https://twitter.com/" /> </PreferenceScreen> </PreferenceCategory> 
它不需要任何Java代码。 感谢CommonsWare!