【问题标题】:Overriding onOptionsItemSelected from SherlockFragmentActivity从 SherlockFragmentActivity 覆盖 onOptionsItemSelected
【发布时间】:2012-06-06 06:45:18
【问题描述】:

昨天,我发现了一个很棒的库,它允许我拥有一个“facebook 菜单”,在操作栏的左上角有一个按钮,当按下该按钮时,它会从左侧滑入一个项目菜单。

问题是我还希望使用 ActionBarSherlock 库来确保我的应用程序向后兼容操作栏。使用库时,我需要重写 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 吗?

【问题讨论】:

  • 检查你是否扩展了 SherlockFragmentActivity 如果你扩展它你可以重写
  • 请阅读的不仅仅是我的问题的标题。

标签: android actionbarsherlock


【解决方案1】:

事实证明,在使用 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);
    }
}

【讨论】:

  • 或者你可以切换你的导入。带有android.view.MenuItem 参数的超类方法是final,以防止您覆盖错误的方法。
  • 谢谢,这对我也有帮助
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2022-01-16
    • 2019-05-19
    • 1970-01-01
    • 2010-10-25
    • 2022-10-02
    • 2011-06-11
    • 2012-01-28
    • 1970-01-01
    相关资源
    最近更新 更多