<为知更新>用android中的Preferencescreen 启动一个新的 activity
来源:互联网 发布:网络门店管理系统 编辑:程序博客网 时间:2024/06/05 14:25
一、 Preferencescreen中启动activity
例如wireless_settings.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>
关于intent标签,其中com.android.settings是工程的包名,com.android.settings.wifi.WifiSettings是要启动的类。
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。
二、 Preference 启动 View,例如 网页
<Preference
android:title="zghwhttt" >
<intent
android:action="android.intent.action.VIEW"
android:data="http://www.baidu.com" />
</Preference>
它会新增一项,标题为android:title中设置的值,当你点击这项时,它会跳到 a web browser。
注意:在所有的 Preference里 都可以添加 intent ,例如下边的 ListPreference:
<ListPreference
android:key="thirdL"
android:title="test Listpreference"
android:summary="first List"
android:entries="@array/cities"
android:entryValues="@array/airport_codes" >
<intent
android:action="android.intent.action.VIEW"
android:data="http://www.baidu.com" />
</ListPreference>
//结果是,先打开 intent,后显示ListPreference;
- <为知更新>用android中的Preferencescreen 启动一个新的 activity
- 使用Preferencescreen启动Activity
- Android学习笔记之启动一个新的Activity
- Android启动一个新的activity并携带数据,返回数据给上一个activity
- android线程中启动新的activity
- Android 通过Preference启动新的Activity
- 为android程序添加新的Activity
- Android 子Activity组件在进程内的启动过程 && 子Activity组件在新进程中的启动过程
- android 一个activity结束,开始一个新的activity
- 启动新的Activity
- android 启动新 app 的activity 新进程的创建
- Android 创建一个新的Activity
- 启动一个启动模式为singleTop的activity
- android:activity:启动一个activity
- android 启动一个activity
- android 启动另外一个程序的Activity
- android 一个activity定时更新另一个activity的UI
- Android中的Activity启动的方式分析
- struts2 validate验证
- ORACLE SQL优化
- 分享别人ios开发的总结
- cookie 技术 在集群中 的应用
- python之web.py框架
- <为知更新>用android中的Preferencescreen 启动一个新的 activity
- window打开服务的Dos命令
- 修改tomcat配置使同一台机器可以同时运行多个tomcat
- 各大IT公司2012校园招聘笔试面试整理 (转载)
- 日期的计算处理
- 分析了一下360安全卫士的 HOOK(二)——架构与实现(zt)
- 共用体union的妙用
- sourceinsight文件相对路径的设置方法
- 如何在命令行下载youtube视频?