0

背景:

我正在重新开发我的一个旧应用程序以使用操作栏,但是我当然仍然想打一个相当大的焦点小组,即 2.3.3 用户。

问题:

我的应用程序在我较新的果冻豆手机上运行良好,但在我较旧的 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 个文件夹 - 一个是 values 和 values-v11

values 包含在它的样式文件中:

<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>
4

1 回答 1

0

将“getActionBar()”更改为“getSupportActionBar()”,它应该可以工作。此外,请确保您的 Activity 是 SherlockActivity 或 SherlockFragmentActivity 的子类。

在 API 级别 11 中添加了 getActionBar(),ActionBarSherlock 添加了 getSupportActionBar() 方法以实现向后兼容性。

于 2013-10-22T13:15:19.440 回答