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

如果您正在使用ActionBarActivitySherlock活动使用

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 回答