java - 不推荐使用 findPreference() 方法? - 安卓

标签 java android android-fragments deprecated android-preferences

我想检测 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. 是否有未弃用的等价物?
  2. 如果没有,我还是用它怎么办?
  3. 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>

快照:

snapshopt

点击 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/

相关文章:

java - 如何使用 espresso 根据项目文本从 ListView 中单击项目?

android - 将两个按钮更改为切换按钮

Android Studio - GitHub Push 无法正常工作

java - 在 Kotlin 中返回 Fragment 实例 @JvmStatic

android - 如何销毁 FragmentStatePagerAdapter 中的旧 fragment

Android 滑动 fragment 出屏幕

java - 现在在哪里可以找到AndroidObservable.fromBroadcast?

java - 使用哪一个进行 Google Drive 集成

java - 从内部类中返回类型 void 的重写方法返回

android - Gradle + AndroidAnnotations 生成重复的类错误 - 需要在每次构建之前清理项目