SlidingMenu:在事件上显示辅助菜单

3
我正在使用由jfeinstein10创建的令人惊叹的库SlidingMenu。所以,一切都进行得非常顺利,但有一件事情。
我能够在事件处理程序中使用toggle()方法打开主菜单。但是我还希望在某些事件(如按钮单击)中打开辅助菜单。
我尝试了以下代码:
SlidingMenu right = getSlidingmenu();
right.setSecondaryMenu(rightMenuView)

我正在考虑执行right.toggle();,但是上面的第二个语句会抛出NullPointerException异常。
编辑:在onCreate中发布。
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    leftMenuView = inflater.inflate(R.layout.left_menu, null, false);
    rightMenuView = inflater.inflate(R.layout.right_menu, null, false);
    customActionBarView = inflater.inflate(R.layout.custom_actionbar,null);

    findAllViews();
    setFontAwesome();

    ab = getSupportActionBar();
    ab.setDisplayShowCustomEnabled(true);
    ab.setDisplayHomeAsUpEnabled(false);
    ab.setDisplayShowHomeEnabled(false);
    ab.setDisplayUseLogoEnabled(false);
    ab.setCustomView(R.layout.custom_actionbar);
    ivHome = (ImageView) findViewById(R.id.ab_home); 
    ivHome.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("TAG", "Tag");
            toggle();
        }
    });


    leftSlidingMenu = getSlidingMenu();
    leftSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
    setBehindContentView(leftMenuView);
    leftSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    leftSlidingMenu.setBehindOffset(100);
    leftSlidingMenu.setFadeDegree(0.35f);

    rightSlidingMenu = getSlidingMenu();
            rightSlidingMenu.setSecondaryMenu(rightMenuView); //NPE Here
            rightSlidingMenu.toggle();  
}

有没有想法如何在事件上打开二级菜单。谢谢。


可以发布源代码吗?特别是启动次级菜单的活动的onCreate()方法? - mach
@mach:发布于编辑中 - Anas Azeem
1
明白了 <code>getSlidingMenu.showSecondaryMenu()</code> - Anas Azeem
2个回答

8

要显示第二个菜单,您可以使用以下代码:

getSlidingMenu().showSecondaryMenu(true);

布尔型参数是动画标志。

谢谢Masarse,你的回答真的帮了我很多。但是我想禁用次级菜单。我已经尝试了getSlidingMenu().showSecondaryMenu(false);,但它没有起作用,你能帮我吗? - Rojesh
@Rojesh,showSecondaryMenu()函数中的布尔型参数是用于动画效果而非关闭菜单。 - Nitish
如果(!sm.isSecondaryMenuShowing()) { sm.showSecondaryMenu(true); }else{ sm.toggle(); },其中sm是getSlidingMenu()函数。 - vrunoa

1

BaseActivity 中进行以下修改

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        toggle();
        return true;
    case R.id.github:
        //Util.goToGitHub(this); //remove this line
        showSecondaryMenu(); //add this line
        return true;
    }
    return super.onOptionsItemSelected(item);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接