web-dev-qa-db-ja.com

ActionBarSherlockは、大量の「呼び出しにはAPIレベル11(現在の最小値は7)」エラーを出します。

ActionBarSherlock 4.0.3をダウンロードして解凍し、libraryフォルダーから新しいプロジェクトを作成しました。 Eclipseによると、srcフォルダーはエラーでいっぱいだったので、_Android-support-v4.jar_の追加、ターゲットAPIの15の設定、コンパイラーのコンプライアンスレベルの1.6など、オンラインでさまざまな指示に従いました。それでも、プロジェクトには194個のエラーがあり、そのすべてが「呼び出しにはAPIレベル11が必要です(現在の最小値は7)」です。したがって、エラーの1つを見ると、次のことがわかります。

_@Override
public void invalidateOptionsMenu() {
    getSherlock().dispatchInvalidateOptionsMenu();
}

public void supportInvalidateOptionsMenu() {
    invalidateOptionsMenu();
    //the previous line has this error in Eclipse:
    //Call requires API level 11 (current min is 7): Android.app.Activity#invalidateOptionsMenu
}
_

invalidateOptionsMenu()は前の関数でオーバーライドされているため、これは私には奇妙に見えますが、Eclipseは、新しいAPIレベルを必要とする関数について引き続き文句を言います。他のエラーを見ると、これは他の多くのエラーにも当てはまることがわかります。

私はJavaよりもPythonの経験が豊富なので、これが発生する原因については何も理解していません。助けていただければ幸いです。助けていただければ、原因についても説明していただけますか。これとあなたがそれを解決するために何をしたのですか?私は問題が発生するたびに誰かに尋ねたくはありません、私も学びたいです。

18
vurp0

最小APIレベル7を使用しており、 invalidateOptionsMenu() はAPIレベル11まで存在しなかったため、デバイスがAPIレベル7を実行している場合、関数はエラーなしでオーバーライドできません。 t基本クラスでも使用可能であり、存在しない関数はオーバーライドできません。

7

Lintチェックを実行した後に私に起こりました。シャーロックアクションバープロジェクトを右クリックしてみてください-> Android tools-> Clear LintMarkers。

37
Martin Nuc

サポートjarで提供される ActivityCompat を使用します。

20
dbrown0708

Dbrown0708回答を除いて、この回答はすべて間違っていますが、もっと宣言します

ActivityCompat サポートライブラリv4で提供されているように、下位APIでinvalidateOptionMenuを使用できます。

構文はinvalidateOptionsMenu(Activity activity);です。

コードは

ActivityCompat.invalidateOptionsMenu(this);

レベル11以降のAPI

invalidateOptionsMenu();
1
Mina Fawzy

import Android.support.v4.app.Fragment;をライブラリとして使用してみてください

0
Chris