Android:当SlidingMenu(jfeinstein)显示时完成活动

时间:2013-06-16 21:15:55

标签: android android-fragments back-button slidingmenu

我正在尝试在我的应用中实现jfeinstein创建的滑动菜单。我想要实现的行为是,当我按下后退按钮并且菜单没有显示时,它将显示出来。这非常有效。 但是当菜单显示时,按后退按钮应该完成当前活动。相反,滑动菜单会再次关闭。

为了实现所描述的行为,我覆盖了onBackPressed:

@Override
public void onBackPressed()
{
    SlidingMenu sm = getSlidingMenu();
    if(!sm.isMenuShowing())
    {
        sm.showMenu();
    }
    else
    {
        finish();
    }
}

但是只要滑动菜单显示onBackPressed就不再被调用了。我怀疑因为我必须使用SlidingFragmentActivity按下后退按钮才会触发片段历史记录堆栈弹出。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

稍微浏览一下SlidingMenu代码后,我发现在SlidingFragmentActivity中覆盖了onKeyUp。所以要走的路是在你的活动中覆盖onKeyUp。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
    if(keyCode == KeyEvent.KEYCODE_BACK)
    {
        SlidingMenu sm = getSlidingMenu();
        if(sm.isMenuShowing())
        {
            finish();
            return true;
        }
    }
    return super.onKeyUp(keyCode, event);
}