SlidingMenu源代码导入及错误分析和解决方法

SlidingMenu源代码导入及错误分析和解决方法

1.首先下载actionbarsherlock和SlidingMenu源代码

  由于在SlidingMenu项目中,styles.xml文件使用到了actionbarsherlock里面的主题定义,所以在使用的时候需要先导入actionbarsherlock

  两个项目的源代码地址为:

    https://github.com/jfeinstein10/SlidingMenu 

    http://actionbarsherlock.com/ 

2.导入源代码

  运行SlidingMneu需要使用到actionbarsherlock和SlidingMenu两个lib,所以在使用项目之前,需要先将那两个lib导入,需要注意的是,因为两个lib都使用到同一个依赖包:android-support-v4.jar,所以得保证两个lib里面的该包使用的同一个版本。(个人使用经验,从网上下载的两个lib里面的该包版本不一样,直接将SlidingMneu里面的包复制到actionbarsherlock里面)

  a.首先导入actionbarsherlock

  下载好源代码之后,在Eclipse里面导入已经存在的Android项目,选择ActionBarSherlock-4.4.0下面的actionbarsherlock这个目录,导入的时候会出现SDk版本问题,Eclipse会直接进行修复直接,或者直接使用Android--Tools--Fix Project property.

  SlidingMenu源代码导入及错误分析和解决方法

  b.导入SlidingMenu_lib

  在github上面下载好代码之后解压,在Eclipse里面File--New--Other--Android Project from existing code,导入jfeinstein10-SlidingMenu-7ebe327里面的library,最好把项目重命名一下,因为library很可能会和其它包在名字上面冲突。

  SlidingMenu源代码导入及错误分析和解决方法

  因为SlidingMenu里面使用到actionbarsherlock,在SlidingMenu_lib代码的com.jeremyfeinstein.slidingmenu.lib.app包下面修改以下3个文件,将Android系统自带的如FragmentActivity替换成SherlockFragmentActivity,继承actionbarsherlock里面的定义的文件。

     SlidingFragmentActivity.java   //FragmentActivity替换成SherlockFragmentActivity

     SlidingListActivity.java、       //ListActivity替换成SherlockListActivity

      SlidingPreferenceActivity.java   //PreferenceActivity替换成SherlockPreferenceActivity

  修改之后,选择项目,右键Properties--Android---Is Library,将actionbarsherlock作为依赖包导入SlidingMenu_lib

  SlidingMenu源代码导入及错误分析和解决方法

  c.导入SlidingMenu示例代码

  导入jfeinstein10-SlidingMenu-7ebe327目录下面的example目录,使用b步骤里面的方法,导入两个actionbarsherlock和SlidingMenu两个依赖lib,程序中的错误都解决,可以直接运行。

操作过程遇到的问题:

1.直接导入jfeinstein10-SlidingMenu-7ebe327目录下面的example实例,出现如下错误:

SlidingMenu源代码导入及错误分析和解决方法

解决方法:按上面的步骤依次进行导入

2.导入两个lib之后出现的问题:

  Console error: Found 2 versions of android-support-v4.jar in the dependency list,but not all the versions are identical (check is based on SHA-1 only at this time). Jar mismatch! Fix your dependencies

问题原因:是两个jar包版本不一致

解决方法:问题原因是两个jar包版本不一致,直接使用较新的android-support-v4.jar版本替换旧版本

3.没有修改SlidingMenu_lib里面的文件

  List of errors: The method getSupportActionBar() is undefined for the type BaseActivity

  The method getSupportMenuInflater() is undefined for the type BaseActivity

  The method onCreateOptionsMenu(Menu) of type BaseActivity must override or implement a supertype method

问题原因:函数没有定义,需要继承于actionbarsherlock里面的类

解决方法:在SlidingMenu_lib代码的com.jeremyfeinstein.slidingmenu.lib.app包下面修改以下3个文件,修改为类似于下面的

SlidingMenu源代码导入及错误分析和解决方法

 4.case expressions must be constant expressions 错误

问题原因:是ADT14后Android库工程中R.class中的资源常量不在为final类型,原因见http://tools.android.com/tips/non-constant-fields 官方解释

解决方法:方法是将switch 转化成if-else语句,这在eclipse中非常容易实现,将光标置于switch关键字上,按ctrl+1,进行装换

SlidingMenu源代码导入及错误分析和解决方法