覆盖来自SherlockFragmentActivity的onOptionsItemSelected

时间:2012-06-06 06:45:19

标签: android actionbarsherlock

昨天,我发现了一个很棒的图书馆,它允许我在操作栏的左上方有一个带有按钮的“facebook菜单”,当按下该按钮时,它会在左侧的项目菜单中滑动。

问题是我希望也使用ActionBarSherlock库来确保我的应用程序向后兼容操作栏。当使用库I时,除其他外,需要覆盖onOptionsItemSelected:

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    int id = item.getItemId();

    if (id == android.R.id.home) {

        rbmView.toggleMenu();

        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

现在我进入了库,发现开发人员已经使onOptionsItemSelected final 。我删除它并尝试再次覆盖它只是发现产品是那个,每当我按下按钮没有任何反应。什么都没有。

关于如何使用darvds_ribbonmenu库以及actionbarsherlock的任何想法?

2 个答案:

答案 0 :(得分:50)

事实证明,在使用ABS时,您需要指定MenuItem的命名空间,以确保覆盖正确的方法。我的解决方案如下:

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) 
{
    int id = item.getItemId();
    Log.d("item ID : ", "onOptionsItemSelected Item ID" + id);
    if (id == android.R.id.home) {
        rbmView.toggleMenu();

        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

答案 1 :(得分:17)

import android.view.MenuItem;更改为import com.actionbarsherlock.view.MenuItem;。否则,您只使用与您导入的MenuItem完全不同的{{1}}。