博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)android技巧01:Preferencescreen中利用intent跳转activity
阅读量:4308 次
发布时间:2019-06-06

本文共 2186 字,大约阅读时间需要 7 分钟。

原文连接:

 

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

1. Preferencescreen中启动activity

例如wireless_setting.xml中有如下片段

 

[html] 
  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] 
  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] 
    1. void performClick(PreferenceScreen preferenceScreen) {  
    2.           
    3.         if (!isEnabled()) {  
    4.             return;  
    5.         }  
    6.           
    7.         onClick();  
    8.           
    9.         if (mOnClickListener != null && mOnClickListener.onPreferenceClick(this)) {  
    10.             return;  
    11.         }  
    12.           
    13.         PreferenceManager preferenceManager = getPreferenceManager();  
    14.         if (preferenceManager != null) {  
    15.             PreferenceManager.OnPreferenceTreeClickListener listener = preferenceManager  
    16.                     .getOnPreferenceTreeClickListener();  
    17.             if (preferenceScreen != null && listener != null  
    18.                     && listener.onPreferenceTreeClick(preferenceScreen, this)) {  
    19.                 return;  
    20.             }  
    21.         }  
    22.           
    23.         if (mIntent != null) {  
    24.             Context context = getContext();  
    25.             context.startActivity(mIntent);  
    26.         }  
    27.     }  

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

你可能感兴趣的文章
10 Things You Need To Know About Cocoa Auto Layout
查看>>
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>
ios设备唯一标识获取策略
查看>>
获取推送通知的DeviceToken
查看>>
Could not find a storyboard named 'Main' in bundle NSBundle
查看>>
CocoaPods安装和使用教程
查看>>
Beginning Auto Layout Tutorial
查看>>
block使用小结、在arc中使用block、如何防止循环引用
查看>>
iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Swift code into Object-C 出现 ***-swift have not found this file 的问题
查看>>
为什么你的App介绍写得像一坨翔?
查看>>
RTImageAssets插件--@3x可自动生成@2x图片
查看>>
iOS开发的一些奇巧淫技
查看>>
常浏览的博客和网站
查看>>
Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
查看>>
iOS在Xcode6中怎么创建OC category文件
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>