非弃用的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!