原文连接:http://blog.csdn.net/xianming01/article/details/7543464

设置中的Preferencescreen不仅可以作为设置界面显示,而且还能够启动activity,下面主要是对启动activity的介绍
1. Preferencescreen中启动activity

例如wireless_setting.xml中有如下片段

[html] view plaincopy
  1. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:settings="http://schemas.android.com/apk/res/com.seedshope.android">
  3. <PreferenceScreen
  4. android:key="wifi_settings"
  5. android:title="@string/wifi_settings"
  6. android:summary="@string/wifi_settings_summary" >
  7. <intent
  8. android:action="android.intent.action.MAIN"
  9. android:targetPackage="com.android.settings"
  10. android:targetClass="com.android.settings.wifi.WifiSettings" />
  11. </PreferenceScreen>
  12. </PreferenceScreen>

其中com.android.settings是工程的包名,com.android.settings.wifi.WifiSettings是要启动的类。另外,xmlns:settings这一项没有也是可以的(那它的作用是什么?)。
        一般情况下,这样就ok了,点击对应的Preference就能够启动对应的activity,然而仅仅这样有时这样,并不一定能够启动对应的activity,因为它与回调函数onPreferenceTreeClick有关,有时候我们会重写这个方法如:

[java] view plaincopy
  1. public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
  2. if ( (preference == mAirplaneModePreference) &&
  3. (Boolean.parseBoolean(
  4. SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) ) {
  5. // In ECM mode launch ECM app dialog
  6. startActivityForResult(
  7. new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
  8. REQUEST_CODE_EXIT_ECM);
  9. return true;
  10. }
  11. else {
  12. // Let the intents be launched by the Preference manager
  13. return false;
  14. }
  15. }

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

[java] view plaincopy
  1. void performClick(PreferenceScreen preferenceScreen) {
  2. if (!isEnabled()) {
  3. return;
  4. }
  5. onClick();
  6. if (mOnClickListener != null && mOnClickListener.onPreferenceClick(this)) {
  7. return;
  8. }
  9. PreferenceManager preferenceManager = getPreferenceManager();
  10. if (preferenceManager != null) {
  11. PreferenceManager.OnPreferenceTreeClickListener listener = preferenceManager
  12. .getOnPreferenceTreeClickListener();
  13. if (preferenceScreen != null && listener != null
  14. && listener.onPreferenceTreeClick(preferenceScreen, this)) {
  15. return;
  16. }
  17. }
  18. if (mIntent != null) {
  19. Context context = getContext();
  20. context.startActivity(mIntent);
  21. }
  22. }

转载于:https://www.cnblogs.com/lovers/articles/2679856.html

(转)android技巧01:Preferencescreen中利用intent跳转activity相关推荐

  1. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能

    如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...

  2. android中各种Intent跳转(邮件、音频、联系人....)

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: [java] view plaincopy Intent intent  ...

  3. android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. android intent 跳转activity,Activity 跳转 都知道用startActivity(Intent)

    Activity 跳转 都知道用startActivity(Intent) 但是如果下面情况呢? Activity1 跳转到 Activity2  但是还需要在Activity2 再回到 Activi ...

  5. 写在方法中的路由跳转

    场景:login页面点击登陆按钮,登陆成功后,进入home页面:(当然,这里就不能用Link跳转了) 问题:history的报错: 解决:需要引入react-router-dom中的withRoute ...

  6. android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换

    怎么在Android应用中利用Activity对动画进行切换 发布时间:2020-11-27 16:19:53 来源:亿速云 阅读:107 作者:Leah 今天就跟大家聊聊有关怎么在Android应用 ...

  7. 如何充分利用开源项目_5个技巧:在开源项目中利用以用户为中心的设计

    如何充分利用开源项目 当我刚开始在开放技术学院 (OTI)工作时,我始终受到以下问题的挑战:"为什么UX设计师为什么要在开源组织工作?" 在我看来,事实是几乎所有设计和可用性工作本 ...

  8. android返回上一级代码,Android实践11 | 利用intent返回数据给上一级activity

    利用intent返回数据给上一级activity 2018-05-08_154146.jpg activity间数据传递的,不但可以把数据从一个activity传给下一个activity,也可以从下一 ...

  9. Android中使用Intent进行窗体切换,并且传值和自定义类的对象详解

    在Android中,Intent对象负责各个Activity窗口之间的切换,同时他更担负起数据传输重任. 一般情况下,使用Intent对象进行简单窗口切换的代码如下: Intent i=new Int ...

最新文章

  1. .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?
  2. 仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的
  3. 什么是云计算基础设施? | 技术头条
  4. NSThread详解
  5. python爬知识星球付费数据_python抓取知识星球精选帖,制作为pdf文件
  6. SqlParameter类——带参数的SQL语句
  7. Live Streaming Paper--流媒体超低时延传输论文汇总
  8. MATLAB使用教程(三)——慢慢练手做项目啦——新手来看
  9. c++ 控制台游戏打砖块
  10. awg线径与电流_AWG_线径电流
  11. 如何禁止福昕阅读器改变PDF页面缩放比例?
  12. oracle 数据库如何获取一条sql语句执行所消耗耗费的时间?
  13. [体渲染]渲染一个球体
  14. Spring iBatis Sqlmap 以及 parameterClass 和 parameterMap 的使用方法
  15. linux:线程同步的5种方法
  16. 卡塔兰(Catalan)数
  17. 阿里沈询直播 分布式事务一
  18. AirPods Pro 2出现随机断连问题,充电仓支持Find My成最大亮点
  19. firefox用12306Helper 0.2结合ie tab+自动订火车票和完成支付全攻略
  20. 显卡用电测试软件,自己动手DIY!教你如何实测显卡电压

热门文章

  1. springboot---成员初始化顺序
  2. docker运行我们的容器
  3. javascript --- vue2.x中原型的使用(拦截数组方法) 响应式原理(部分)
  4. JavaScript --- 自定义优先级队列
  5. MDN文档基础知识搜集
  6. Elasticsearch实战篇——Spring Boot整合ElasticSearch
  7. /home文件夹重新划分独立分区
  8. JAXB vs XStream
  9. ORB-SLAM2-金字塔求解-特征点的提取-描述子的计算
  10. internet网络 checksum校验和计算方法