2

jfeinstein によって作成されたスライド メニューをアプリに実装しようとしています。私が達成したい動作は、戻るボタンを押してメニューが表示されていないときに表示されることです。これはうまくいきます。ただし、メニューが表示されているときに戻るボタンを押すと、現在のアクティビティが終了するはずです。代わりに、スライド メニューが再び閉じられます。

説明した動作を実現するために、onBackPressed を上書きしました。

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

しかし、スライド メニューが表示されるとすぐに onBackPressed は呼び出されなくなります。戻るボタンを押すと SlidingFragmentActivity を使用する必要があるため、フラグメント履歴スタックがトリガーされてポップするのではないかと思います。

この問題を解決する方法を知っている人はいますか?

4

1 に答える 1

6

SlidingMenu コードをもう少し調べたところ、onKeyUp が SlidingFragmentActivity で上書きされていることがわかりました。そのため、アクティビティで 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);
}
于 2013-06-17T19:22:13.027 に答える