背景
我正在努力重新使用我的旧应用程序来使用操作栏,但是我当然希望仍然会成为2.3.3用户的大型焦点组。
问题:
我的应用程序在我的新Jelly Bean手机上工作正常,但在我的旧版GingerBread手机上崩溃,并在“getActionBar()等等时出现NoSuchMethodException。
我知道这种情况正在发生,因为手机不支持它..但我不明白为什么因为我使用的是android-support-v4.jar ,我可以看到方法并且代码正常,没有任何编译错误。
我的研究:
我已阅读其他帖子,他们说将你的minSdkVersion更改为11,它应该可以正常工作,但我希望支持旧设备。
我还在以前的项目中使用了神奇的actionbarsherlock库,并没有出现这个问题......
详细信息:
在我的android SDK文件中,我有
<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8"/>
我正在使用Android Studios,因此我将项目的构建目标设置为4.2.2(我不确定这是否正确)..
我的Android清单文件也有:
android:theme="@style/AppTheme">
我的res文件夹中有2个文件夹 - 一个是值和值-v11
值在其样式文件中包含此内容:
<resources>
<style name="AppBaseTheme" parent="@android:style/Theme.NoTitleBar">
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
</resources>
和values-v11在其样式文件中包含此内容:
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light" />
<style name="MenuTheme" parent="android:Theme.NoTitleBar" />
</resources>
答案 0 :(得分:0)
将“getActionBar()”更改为“getSupportActionBar()”,它应该可以正常工作。 另外,请确保您的Activity是子类化SherlockActivity或SherlockFragmentActivity。
在API级别11中添加了getActionBar(),ActionBarSherlock添加了getSupportActionBar()方法以实现向后兼容。