使用兼容性库在ICS中未显示选项菜单

时间:2011-12-01 18:02:26

标签: android android-4.0-ice-cream-sandwich android-support-library android-optionsmenu

我无法在使用android-support-v4.jar库的项目中的ICS片段中显示选项菜单。我正在使用Galaxy Nexus手机进行测试。

我们没有使用操作栏,并且需要该应用程序兼容2.2+。我们没有在ICS活动中看到任何选项菜单(FragmentActivity不支持onCreateOptionsMenu)

我可以在以前版本的Android中使用菜单 - 我有所有正确的框架来启用选项菜单(如下所示)但ICS中没有显示任何内容。单步执行代码时,不会调用onCreateOptionsMenu。有人可以建议修复吗?

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class SuperFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.display_options_actions, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.menu_sign_in:
                break;
            case R.id.menu_sign_out:
                break;
        }
        return true;
    }
    // ...
}

清单文件中的目标操作系统版本:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="14"/>

3 个答案:

答案 0 :(得分:32)

从清单中删除android:targetSdkVersion="14"会再次启用选项菜单按钮。

这是因为我的清单中指定了@android:style/Theme.Black.NoTitleBar主题 - 安卓:targetSdkVersion为14,选项菜单被插入操作栏菜单,而不是选项菜单按钮屏幕底部的按钮栏,主题是删除活动标题和操作栏。

The action bar can be removed,虽然我不确定这是否能解决这个问题,因为我还没有让它工作,所以它在版本2.2 - 4之间兼容。

答案 1 :(得分:11)

只需从&#34; 14&#34;更改android:targetSdkVersion至&#34; 10&#34; (少于11),这个问题将得到解决。

<uses-sdk android:minSdkVersion="3" 
      android:targetSdkVersion="10" />

答案 2 :(得分:2)

根据Android CDD,未显示选项菜单的新行为的截止值是targetSdkVersion&gt; 10.您可以选择使用targetSdkVersion&lt; = 10在旧版模式下运行应用,或者根据新指南调整应用(例如在应用中添加菜单按钮或使用操作栏)。请注意,您不必增加目标构建版本(eclipse中的项目属性)来增加targetSdkVersion。