无法动态地向ActionBar添加按钮

时间:2014-02-24 08:18:40

标签: android android-actionbar android-actionbar-compat

我正在尝试添加ActionBar按钮,但无需为每个活动创建单独的.xml文件。这是代码:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        menu.add(0, 0, 0, R.string.ic_refresh_str).setIcon(R.drawable.ic_action_refresh);
        return true;
    }

该按钮不会出现。如果我将代码修改为以下代码,它可以工作:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        menu.add(0, 0, 0, R.string.ic_refresh_munawwat).setIcon(R.drawable.ic_action_refresh)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        return true;
    }

但问题是android:minSdkVersion是7,这是我在setShowAsAction上得到的错误信息:

  

调用需要API级别11(当前最小值为7):   android.view.MenuItem#setShowAsAction

如何添加动态按钮并继续支持minSdk 7?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用android-support-v4库或Actionbar Sherlock

答案 1 :(得分:0)

解决方案是使用已弃用的函数MenuCompat.setShowAsAction

@SuppressWarnings("deprecation")
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuItem item = menu.add(0, 0, 0, R.string.ic_refresh_txt).setIcon(R.drawable.ic_action_refresh);
        MenuCompat.setShowAsAction(item, 2);

        return true;
    }