先前有一个项目,是基于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