1

私は Android サポート ライブラリ v4 と v7 を使用しています。Android 開発者ページからライブラリをセットアップしました。

ただし、メソッド呼び出しと混同しています。たとえば、次のメソッドです。

invalidateOptionsMenu();

API レベル 11+ でのみ動作しますが、次のような互換性のあるバージョンがあります。

ActivityCompat.invalidateOptionsMenu(this);

したがって、次のように両方のコードを追加する必要があるのではないかと思います。

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            invalidateOptionsMenu();
        } else
            ActivityCompat.invalidateOptionsMenu(this);

これは必要ですか、それとも互換性のあるバージョンだけが必要ですか?


互換版を使えば十分のようです。

ただし、この種のコードをよく見つけました。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
}

では、この条件判定は何を目的としているのだろうか。

4

3 に答える 3

4

あなたが使用している場合、ActionBarActivityまたはSherlockアクティビティを使用している場合

supportInvalidateOptionsMenu()
于 2014-05-10T16:00:09.843 に答える
3

互換性のあるバージョンは、両方で正常に機能します。だから、使う

ActivityCompat.invalidateOptionsMenu(this);
于 2013-10-23T06:40:58.843 に答える
2

あなたは単に使用することができます

        ActivityCompat.invalidateOptionsMenu(this);

サポートライブラリを含めているので、これしか使用できません。

于 2013-10-23T06:39:27.900 に答える