`

Android设置中的Preferencescreen用法介绍与分析

 
阅读更多

今天主要研究了一下设置中的Preferencescreen应用,它不仅可以作为设置界面显示,而且还能够启动activity,下面主要是对启动activity的介绍
1. Preferencescreen中启动activity
例如wireless_setting.xml中有如下片段

<PreferenceScreen xmlns:Android="http://schemas.android.com/apk/res/android" 

xmlns:settings="http://schemas.android.com/apk/res/com.seedshope.android">
    <PreferenceScreen
        Android:key="wifi_settings"
        Android:title="@string/wifi_settings"
        Android:summary="@string/wifi_settings_summary" >
        <intent
            Android:action="android.intent.action.MAIN"
            Android:targetPackage="com.android.settings"
            Android:targetClass="com.android.settings.wifi.WifiSettings" />
    </PreferenceScreen>
</PreferenceScreen>

 其中com.Android.settings是工程的包名,com.android.settings.wifi.WifiSettings是要启动的类。
一般情况下,这样就ok了,点击对应的Preference就能够启动对应的activity,然而仅仅这样有时这样,并不一定能够启动对应的activity,因为它与回调函数onPreferenceTreeClick有关,有时候我们会重写这个方法如:

    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
       if ( (preference == mAirplaneModePreference) &&
                (Boolean.parseBoolean(
                    SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) ) {
            // In ECM mode launch ECM app dialog
           startActivityForResult(
                new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
                REQUEST_CODE_EXIT_ECM);
            return true;
        }
        else {
            // Let the intents be launched by the Preference manager
            return false;
       }
    }

 其中WirelessSetting.java中有如上函数,当返回值为true时,你怎么点击Preference都不会跳转到activity的,只有等到它的返回值为false的时候,才可以正常跳转,因为点击某一个Preference的真正实现在Preference.java的performClick函数中如下:

void performClick(PreferenceScreen preferenceScreen) {
        
        if (!isEnabled()) {
            return;
        }
        
        onClick();
        
        if (mOnClickListener != null && mOnClickListener.onPreferenceClick(this)) {
            return;
        }
        
        PreferenceManager preferenceManager = getPreferenceManager();
        if (preferenceManager != null) {
            PreferenceManager.OnPreferenceTreeClickListener listener = preferenceManager
                    .getOnPreferenceTreeClickListener();
            if (preferenceScreen != null && listener != null
                    && listener.onPreferenceTreeClick(preferenceScreen, this)) {
                return;
            }
        }
        
        if (mIntent != null) {
            Context context = getContext();
            context.startActivity(mIntent);
        }
    }

 当点击某个Preference时的调用流程是AdapterView.performItemClick--》PreferenceScreen.onItemClick--》Preference.performClick--》PreferenceActivity.onPreferenceTreeClick,当onPreferenceTreeClick返回true的时候就直接return了,没有走下面启动activity的地方了,因此要使一个Preference能够正常跳转到另外一个activity有两个条件,一是xml里面是否设置正确,第二是调用该xml的java类是否在onPreferenceTreeClick这个函数需要返回false。
本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-10/45204.htm

分享到:
评论

相关推荐

    android 设置界面 PreferenceScreen

    在Android开发中,设置界面是应用中不可或缺的一部分,它允许用户根据个人喜好调整应用程序的各种功能。`PreferenceScreen`是Android SDK提供的一种用于构建设置界面的标准组件。本篇将深入探讨`PreferenceScreen`的...

    安卓PreferenceScreen使用详细Demo

    在Android开发中,PreferenceScreen是用于构建设置界面的一种机制,它允许开发者以XML方式定义用户界面,类似于AndroidManifest.xml中的Activity定义。PreferenceScreen提供了一种简单的方法来创建可交互的设置项,...

    Android中Preference的使用以及监听事件分析

    本文将深入探讨Preference的使用方法及其事件监听机制。 一、Preference的种类 Preference家族包括多种类型,如CheckBoxPreference(复选框)、SwitchPreference(开关按钮)、EditTextPreference(文本输入框)、...

    Android布局——Preference自定义layout的方法

    导语:PreferenceActivity是一个方便设置管理的界面,但是对于界面显示来说比较...使用Preference的android:@layout属性 1)xml文件中preference的添加 代码如下: &lt;Preference android:layout=”@layout/youmi_ad”

    Android设置PreferenceCategory背景颜色的方法

    在Android开发中,PreferenceCategory是用于在PreferenceScreen中创建分类的一种元素,通常用来组织相关的设置项。然而,PreferenceCategory的默认样式可能不满足所有设计需求,尤其是当开发者想要自定义界面风格时...

    Android中EditText密码样式设置

    `PreferenceScreen`在这里可能指的是Android中的偏好设置界面,通常用于创建设置应用中的各种选项。虽然与`EditText`的密码样式设置不是直接相关,但可以结合使用,例如,将显示/隐藏密码的设置保存在共享首选项...

    Android中preference的使用实例代码

    本篇文章将深入探讨如何在Android项目中使用Preference,通过实例代码来展示其用法。 一、Preference概述 Preference是Android SDK中的一个类,位于`android.preference`包下,它为应用程序提供了用户设置界面的...

    Android 设置情景模式源码.zip

    开发者可以通过分析这些源码学习如何与Android系统的设置API交互,如何处理用户的输入,以及如何保存和恢复用户设定的情景模式。 在源码中,我们可以期待以下几个核心知识点: 1. **BroadcastReceiver**:用于监听...

    android 设置1

    在Android开发中,设置界面通常是用户与应用交互的重要部分,`Preferencescreen`是构建设置界面的一个关键组件。本文将深入探讨如何使用`Preferencescreen`来启动`Activity`以及相关注意事项。 `Preferencescreen`...

    Android应用添加设置菜单.pdf

    整个过程涉及到Android菜单的创建和管理,包括菜单资源文件的定义、菜单的创建方法和事件处理、以及如何将设置界面与应用逻辑相整合。通过实现这些功能,开发者可以为用户提供一个直观、易用的设置界面,从而提高...

    Android房iPhone风格设置页面

    在Android开发中,为了提供与iOS相似的用户体验,开发者有时会采用特定的设计和技术来模仿iPhone的界面风格。这里我们关注的是“Android仿iPhone风格设置页面”,这个话题涉及到使用`PreferenceActivity`来构建一个...

    android Preference Demo

    通过学习和分析这个Demo,开发者可以快速掌握Preference的用法,并将其应用到实际项目中。 总结,Preference是Android系统提供的强大工具,它简化了设置界面的构建过程,使得开发者可以专注于逻辑处理,而不是复杂...

    android Preference自定义样式

    在Android开发中,Preference是用来构建设置界面的一种组件,它提供了用户可以交互的选项,如开关、选择列表等。为了提供个性化的用户体验,开发者有时需要对Preference进行自定义样式。本篇将深入探讨如何在Android...

    Android软件开发之PreferenceActivity中组件的使用

    通过使用PreferenceScreen和相关的Preference元素,开发者可以在布局XML文件中定义各种类型的偏好设置,如CheckBoxPreference、SwitchPreference、EditTextPreference等。 1. **PreferenceScreen**: 这是设置界面的...

    Android中PreferenceSetting的小实例源码

    3. **链接布局与代码**:在PreferenceScreen的XML布局中,使用`&lt;your_package&gt;.BrightnessPreferenceSetting&gt;`标签添加自定义的亮度设置项,并通过`app:key`属性设置对应的数据键。 4. **数据同步**:当滑动条值...

    Android PreferenceActivity 学习笔记

    这篇学习笔记将深入探讨PreferenceActivity的使用方法、功能以及与源码相关的知识。 首先,PreferenceActivity是Android SDK提供的一种特殊类型的Activity,它允许开发者快速构建具有可配置选项的界面,类似于系统...

    Android4.4 settings源码

    在 Android 4.4 中,首选项框架(Preference Framework)是设置界面的基础,它允许开发者使用 XML 文件定义 UI 元素,并在代码中处理用户交互。`android.preference` 包含了各种偏好类,如 `CheckBoxPreference`、`...

    Android应用源码之Settings.zip

    源码中会包含各种setter方法,用于更新系统设置,并通过AIDL(Android Interface Definition Language)与上层应用交互。 3. **Preference Framework** Settings应用大量使用了Android的Preference Framework,这...

    Android PreferenceActivity 使用练习

    本篇文章将深入探讨PreferenceActivity的使用方法以及相关知识点。 首先,我们了解`PreferenceActivity`的基本概念。`PreferenceActivity`是继承自`ListActivity`的一个类,主要用于展示一个基于列表的偏好设置界面...

    Android5.0 Settings源码

    在Android系统中,Settings应用是用户与系统设置交互的主要界面,它包含了各种系统级别的配置选项。在Android 5.0版本中,Settings源码的研究对于理解Android系统的内部工作原理、定制化开发以及优化用户体验至关...

Global site tag (gtag.js) - Google Analytics