Android 2.x中使用actionbar - Actionbarsherlock (2)

先前有一个项目,是基于android4.0来开发,使用到了Fragment及ActionBar,没打算支持android2.1-android2.3系列版本

写完之后,我将此应用发布到百度应用,一天以后,收到百度测试员反馈的信息:由于运行时出现"强制关闭错误",此应用未上架,当时一看,我猜想应该是由于2.x版本不支持fragment及Actionbar引起

正好今天有空,重新打开此项目,启动android 2.1的模拟器,运行应用,果然一样的"强制关闭"错误,查看了下错误信息,果然是因为Fragment,ActionBar在2.x下不支持所引起,正好前段时间了解到ActionBarSherlock可以在2.x及4.x等各版本支持Fragment,ActionBar,于是特意使用ActionBarSherlock对项目进行了升级

升级步骤

1.在项目中add library。方法是右击属性,然后再android类中,点击add library,选择我们刚刚导入的ActionBarSherlock库的jar

2.导入后,可能有些人会出现jar包冲突,这是因为abs和自己项目中同时存在android-support-v4这个包,这时只要删掉自己项目中的这个jar包就ok了。

至此,我们就能在项目中使用abs 的 actionbar了

3.修改AndroidManifest.xml,添加或修改代码,如下所示

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="16" />

<uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />

在application节增加以下内容
android:theme="@style/Theme.Sherlock"

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock" >

 

设置在2.x下使用actionBar样式来显示界面,不然会显示为菜单样式

 

4.修改相应类
相应类的对应关系
android.app.Activity->com.actionbarsherlock.app.SherlockActivity
android.app.Fragment->android.support.v4.app.Fragment
android.app.FragmentTransaction->android.support.v4.app.FragmentTransaction
android.view.Menu->com.actionbarsherlock.view.Menu
android.view.MenuItem->com.actionbarsherlock.view.MenuItem

方法对应关系
getFragmentManager->getSupportFragmentManager
getMenuInflater->getSupportMenuInflater
getActionBar->getSupportActionBar
以上左边对应的为Activity的方法,右边对应的为SherlockActivity的方法

另外我在库中发现com.actionbarsherlock.app.SherlockFragmentActivity这个类,试了下和SherlockActivity差不多,某些情况下可以混合使用这两个类

5.把不需要的包从import导入列表中注释掉,至此,项目已经可以在android2.x-4.x中成功运行
----------
actionbarsherlock库下载(abs4.2.0.jar,版本4.2.0):
http://www.kuaipan.cn/file/id_10148578223724194.html

 

原文:http://my.oschina.net/chenzz/blog/119586

时间: 2024-07-28 21:53:06

Android 2.x中使用actionbar - Actionbarsherlock (2)的相关文章

Android 2.x中使用actionbar - Actionbarsherlock

1. 范例说明 从Android 3.0开始,Android引入了ActoinBar,不得不说3.0之前android的标题栏确实比较丑,并且还没有任何功能. 之前很多应用的顶部栏很多都是仿苹果的,比如微信.随着Android 4.0和Android 4.2 的发布和慢慢的推广开来,很多应用也开始使用Google推广的UI设计,而ActionBar是其中相当重要的一部分. 无奈google没有发布3.0之前版本的ActionBar的兼容包.还好网上有提供开源的别人开发的,ActionBarShe

settings-无法再android系统setting中的actionbar中添加switch

问题描述 无法再android系统setting中的actionbar中添加switch 在系统setting中添加了一个自己的选项.可惜在界面中的actionbar上无法添加switch 系统的蓝牙setting中有相同的结构.源码的添加switch代码如下: 大神们!!!求解啊!!!!!! Activity activity = getActivity(); Switch actionBarSwitch = new Switch(activity); if (activity instanc

Android中通过ActionBar为标题栏添加搜索及分享视窗

在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.ActionBar的主要目的是: 1.提供一个用于识别应用程序的标示和用户的位置的专用空间. 2.在不同的应用程序之间提供一致的导航和视觉体验. 3.突出Activity的关键操作(如"搜索"."创建"."共享"等),并且在可预见的方法内给用户提供快捷的访问.

图片-android 4.0中 WebP不显示问题(不考虑4.0以下系统)

问题描述 android 4.0中 WebP不显示问题(不考虑4.0以下系统) 由于图片太大,我们项目中使用了webp格式的图片,在适配三星s2,4.0系统的时候出现了这种问题,部分webp图片可以显示,一部分webp图片不显示,但是在4.3以上的手机测试时都没有问题,不知道怎么回事,有没有大神帮解答下!谢谢! 解决方案 Android4.0 Toast显示问题Android 4.0 系统语言预设问题android 4.0 显示系统

android 编写fragment中

问题描述 android 编写fragment中 一致出现程序很不幸,**运行已经停止的那个弹出框,是什么问题啊? 解决方案 请给出具体的错误信息,最好能附上相应的源代码以方便分析. 解决方案二: 请给出具体的错误信息,最好能附上相应的源代码以方便分析. 解决方案三: anr错误,可能logcat日志,找到你的代码出错行 解决方案四: 调试的错误日志信息是什么 解决方案五: LZ贴出错误日志才能知道错在哪里 解决方案六: 对话框是依靠Activity存在的,是不是你的Activity finis

android 在代码中如何设置 根视图的宽高?

问题描述 android 在代码中如何设置 根视图的宽高? android 在代码中如何设置 根视图的宽高? 如何设置视图container的宽高? public void popEdit(EditText _edit) { // edit=_edit; LinearLayout container=new LinearLayout(cont); container.setOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParam

android 4.3中一次完整的android源码截屏事件的捕获

1.背景 我们知道android提供了一个系统截屏功能,就是按住电源键和音量减的按键0.5秒,系统将执行截屏功能.所以要实现系统截屏的功能,就是要捕获系统的这两个组合键下面的函数,然后一层一层的向下挖掘.现在网上找到的版本是在Surface.java文件下存在ScreenShot()函数,是@hide的.但是这是之前版本的办法,在android4.3之后已经是不适用的,因为在/frameworks/base/core/java/android/view/的Surface.java下并没有Scre

在Android应用程序中使用Internet数据

常用缩略词 Ajax: Asynchronous JavaScript + XML API:应用程序编程接口 CSV:逗号分隔值 CSS:层叠样式表 DOM:文档对象模型 HTML:超文本标记语言 HTTP:超文本传输协议 IDL:接口 描述语言 JSON:Javascript 对象标识 SAX:XML 简单 API SDK:软件开发包 UI:用户界面 URL:统一资源定位符 XML:可扩展标记语言 3G:第三代手机技术标准 Android 应用程序必须访问位于 Internet 上的数据,而

开发可统计单词个数的Android驱动程序(中)

五.指定与驱动相关的信息 虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息.一般需要为Linux驱动程序指定如下信息. 1. 模块作者:使用MODULE_AUTHOR宏指定. 2. 模块描述:使用MODULE_DESCRIPTION宏指定. 3. 模块别名:使用MODULE_ALIAS宏指定. 4. 开源协议:使用MODULE_LICENSE宏指定. 除了这些信息外,Linux驱动模块自己还会包含一些信息.读者可以执行下面的命令查看word_count.ko