0

バックグラウンド:

アクションバーを利用するために私の古いアプリを作り直すことに取り組んでいますが、もちろん、2.3.3ユーザーである非常に大きなフォーカスグループをまだヒットしたいと思っています.

問題:

私のアプリは新しい Jelly Bean Phone では問題なく動作しますが、古い 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つのフォルダーがあります.1つはvaluesとvalues-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>
4

1 に答える 1

0

「getActionBar()」を「getSupportActionBar()」に変更すると、機能するはずです。また、Activity が SherlockActivity または SherlockFragmentActivity のいずれかをサブクラス化していることを確認してください。

getActionBar() は API レベル 11 で追加されました。ActionBarSherlock は下位互換性のために getSupportActionBar() メソッドを追加します。

于 2013-10-22T13:15:19.440 に答える