【问题标题】:Android: How to hide the sliding menu when back button clickedAndroid:单击后退按钮时如何隐藏滑动菜单
【发布时间】:2012-10-09 07:50:35
【问题描述】:

我正在使用:

https://github.com/iPaulPro/SlidingMenu

实现 Facebook 类滑动菜单的库,以及 ActionBarSherlock 库。

在我的例子中,BehindContentView 是一个 ListFragment。

1.单击图像以获取 behindView(调用 toggle();)。

2。 onListItemClicked 进入 Activity_2,显示所点击项目的文本。

3.在这个 Activity_2 中,当我单击设备后退按钮时,我得到了主 Activity_1,但后面的视图是打开的。通常在 Facebook 或 Google+ 中的行为是,当您从任何其他 Activity 回到 Activity_1 时,隐藏 behindView。

4.此外,在 Activity_2 上,即使有这些行,主页似乎也无法正常工作(当我单击主页按钮时没有任何反应)。

    ActionBar bar = this.getSupportActionBar();
    bar.setDisplayHomeAsUpEnabled(true);
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
    bar.setHomeButtonEnabled(true);

如何解决第3步和第4步??

谢谢

【问题讨论】:

    标签: android android-actionbar android-sliding


    【解决方案1】:
    SlidingMenu menu;
    
        @Override
    public void onBackPressed() {
        if (menu.isMenuShowing()) {
            menu.showContent(true);
            return;
        }
    
        super.onBackPressed();
    }
    

    轰隆隆。如果菜单退出,则在活动中按后按,它就会消失

    【讨论】:

    • 你是说 isMenuShowing() 吗?
    【解决方案2】:

    隐藏滑动菜单

    onListItemClicked 调用 hide() 或 toggle()

    对于 Home 按钮 ActionBar 它必须工作,就这样处理它

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            // you code
            return true;
        }
    

    【讨论】:

    • 但我不能使用切换()。在扩展 SherlockListFragment 的片段中。 toggle() 仅在具有 SlidingFragmentActivity 范围的类中可用。
    • 这样你就有了活动中的slidingMenu,以及片段上的onListItemClicked。如果是真的。在您的片段中创建一个侦听器并在活动中实现它
    【解决方案3】:

    要隐藏滑动菜单并打开需要的意图,您需要在单击时提供要打开的意图。这是一个小例子

    private SlideMenu slidemenu
    // this is from code. no XML declaration necessary, but you won't get state restored after rotation.
    slidemenu = new SlideMenu(this, R.menu.slide, this, 333);
    // this inflates the menu from XML. open/closed state will be restored after rotation, but you'll have to call init.
    slidemenu = (SlideMenu) findViewById(R.id.slideMenu);
    slidemenu.init(this, R.menu.IntentName, this, 333);
    

    我使用了coboltforge.slidemenu 库。

    我认为在iPaulPro/SlidingMenu 库中会类似。

    【讨论】:

    • 我试试这个,它让我陷入了循环。
    【解决方案4】:
    @Override 
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            getSlidingMenu().toggle(true);
            return false;
        } else {
            return super.onKeyUp(keyCode, event);
        }
    }
    

    只需将其放在您的活动中即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 2021-03-23
      相关资源
      最近更新 更多