あるアプリケーションを作っていて、UIをActionBarで統一するためActionBarSherlockを導入しました。
ListView関連サポートがないとか(これはなんとか回避)、MapActivityサポートがないとか(これも無理矢理回避)困難を極めたのですが、普通に実装しているのにNoClassDefFoundErrorが出る事案が発生。
それまでGalaxy Nexusで動かしていたときは何とも無かったのに、NexusOneで急に出るようになってしまいました。これがAndroidの互換性の罠か…。
調査したところ、SearchViewをContexual Menuとして実装するところを外すと上手くいきました。
NoClassDefFoundErrorが何故出るかは不明なのですが、よくMapViewでGoogleAPIsを指定しないと同じような事象になるので、まあそういうもんだろうとあまり考えずに それっぽい実装をして終了。こんな記事では役に立たないこと請け合いのなので、ダメそうだった部分を記載しておきます。
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = this.getSupportMenuInflater(); inflater.inflate(R.menu.contexual, menu); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 〜〜〜〜〜〜