HoloEveryWhere笔记(续坑之二)
这回说的是版本问题。
前几天手贱把 SDK 从 21 升级到 22 ,然后 HoloEveryWhere 就不正常了,只能也更新了一下。结果发现 ActionBarSherlock 又改了,目录结构调整了一下。另外 HoloEveryWhere 的 SupportLibrary 路径也变了。还好有 ln -s 可以搞定。
但是更新完 HoloEveryWhere 以前用它写的程序要么编译不了,要么运行出错,或者运行时卡死——这可真是太坑爹了。
研究半天才发现,貌似是 .classpath 造成的问题,具体原因懒得研究(也有可能是 SDK22 的原因),重新创建了应用,然后把代码和资源复制过来,通常就可以解决运行时出错的问题了。至于卡死的问题,貌似也是与升级有关,修正了几个警告以后不再出现。
除了上面说的版本问题以外,还有一些与前坑类似的同名类或方法问题。
比 如 ListView 的 Adapter 操作,标准组件可以用 listView.getAdapter() 来取得绑定的 Adapter ,但是在 HoloEveryWhere 里不可以这么做,会出错。看了一下源码才知道要用 getAdapterSource() 代替之才对。
另 外,我原来的代码里用到过通过 alertTitle ID 来取得 AlertDialog 的标题(因为没有 getTitle 方法),但是这个方法在 HoloEveryWhere 的 AlertDialog 中不可用。当然原来这个方法本来也不是什么正规的做法,是我从 StackOverflow 上搜来的,现在这招不灵了,只能老老实实自己派生一个 Dialog 类来操作。
最后再说一下主菜单的问题,不知道是不是我之前使用的方式哪里不对,目前这个版本在 ActionBar 上同时使用 Tab 和主菜单都已经没问题了。
推送到[go4pro.org]