(转)android技巧01:Preferencescreen中利用intent跳转activity
原文连接:http://blog.csdn.net/xianming01/article/details/7543464
设置中的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是要启动的类。另外,xmlns:settings这一项没有也是可以的(那它的作用是什么?)。
一般情况下,这样就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);
- }
- }
转载于:https://www.cnblogs.com/lovers/articles/2679856.html
(转)android技巧01:Preferencescreen中利用intent跳转activity相关推荐
- android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能
如何在Android中利用Intent实现一个页面跳转功能 发布时间:2021-02-20 17:06:31 来源:亿速云 阅读:113 作者:Leah 本篇文章为大家展示了如何在Android中利用 ...
- android中各种Intent跳转(邮件、音频、联系人....)
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: [java] view plaincopy Intent intent ...
- android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- android intent 跳转activity,Activity 跳转 都知道用startActivity(Intent)
Activity 跳转 都知道用startActivity(Intent) 但是如果下面情况呢? Activity1 跳转到 Activity2 但是还需要在Activity2 再回到 Activi ...
- 写在方法中的路由跳转
场景:login页面点击登陆按钮,登陆成功后,进入home页面:(当然,这里就不能用Link跳转了) 问题:history的报错: 解决:需要引入react-router-dom中的withRoute ...
- android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换
怎么在Android应用中利用Activity对动画进行切换 发布时间:2020-11-27 16:19:53 来源:亿速云 阅读:107 作者:Leah 今天就跟大家聊聊有关怎么在Android应用 ...
- 如何充分利用开源项目_5个技巧:在开源项目中利用以用户为中心的设计
如何充分利用开源项目 当我刚开始在开放技术学院 (OTI)工作时,我始终受到以下问题的挑战:"为什么UX设计师为什么要在开源组织工作?" 在我看来,事实是几乎所有设计和可用性工作本 ...
- android返回上一级代码,Android实践11 | 利用intent返回数据给上一级activity
利用intent返回数据给上一级activity 2018-05-08_154146.jpg activity间数据传递的,不但可以把数据从一个activity传给下一个activity,也可以从下一 ...
- Android中使用Intent进行窗体切换,并且传值和自定义类的对象详解
在Android中,Intent对象负责各个Activity窗口之间的切换,同时他更担负起数据传输重任. 一般情况下,使用Intent对象进行简单窗口切换的代码如下: Intent i=new Int ...
最新文章
- .netcore 如何获取系统中所有session_集群化部署,Spring Security 要如何处理 session 共享?
- 仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的
- 什么是云计算基础设施? | 技术头条
- NSThread详解
- python爬知识星球付费数据_python抓取知识星球精选帖,制作为pdf文件
- SqlParameter类——带参数的SQL语句
- Live Streaming Paper--流媒体超低时延传输论文汇总
- MATLAB使用教程(三)——慢慢练手做项目啦——新手来看
- c++ 控制台游戏打砖块
- awg线径与电流_AWG_线径电流
- 如何禁止福昕阅读器改变PDF页面缩放比例?
- oracle 数据库如何获取一条sql语句执行所消耗耗费的时间?
- [体渲染]渲染一个球体
- Spring iBatis Sqlmap 以及 parameterClass 和 parameterMap 的使用方法
- linux:线程同步的5种方法
- 卡塔兰(Catalan)数
- 阿里沈询直播 分布式事务一
- AirPods Pro 2出现随机断连问题,充电仓支持Find My成最大亮点
- firefox用12306Helper 0.2结合ie tab+自动订火车票和完成支付全攻略
- 显卡用电测试软件,自己动手DIY!教你如何实测显卡电压