如何在按钮点击事件中打开滑动菜单?

6
我正在使用此链接实现滑动菜单。如果我在onCreate()方法中使用这段代码,它能够完美运行。
我的问题是:如何在按钮点击事件中打开侧滑菜单?
我尝试了下面的代码。
public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final SlidingMenu menu = new SlidingMenu(this);

        Button mButton = (Button) findViewById(R.id.slidingMenu);
        mButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                menu.setMode(SlidingMenu.RIGHT);
                menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
                menu.setFadeDegree(0.5f);
                menu.attachToActivity(MainActivity.this,
                        SlidingMenu.SLIDING_CONTENT);
                menu.setMenu(R.layout.activity_menu);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

但是当我点击按钮时,侧边菜单没有打开。我没有收到任何错误信息。我该怎么做?


2
在您的按钮单击事件中尝试使用 menu.toggle()。如果菜单未打开,它将打开菜单。 - Rethinavel
2
如果你只想打开菜单而不是切换它,可以使用menu.showMenu()。此外,您应该将所有的set方法从OnClickListener中移出。 - peshkira
但是,如果我使用 menu.showMenumenu.toggle(),那么我会收到错误信息,如 java.lang.IllegalStateException: This SlidingMenu appears to already be attached。因此,在 menu.showMenumenu.toggle() 之后,我需要清除任何内容吗? - InnocentKiller
1个回答

8
在点击监听器之前,您应该设置菜单。在您的代码片段中,每次单击按钮时都会设置和附加菜单。但是,您只应该显示菜单而不是在单击时附加它。
public class MainActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final SlidingMenu menu = new SlidingMenu(this);
    menu.setMode(SlidingMenu.RIGHT);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    menu.setFadeDegree(0.5f);
    menu.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_CONTENT);
    menu.setMenu(R.layout.activity_menu);

    Button mButton = (Button) findViewById(R.id.slidingMenu);
    mButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
          menu.showMenu();
          //or 
          //menu.toggle();
        }
    });
 }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

}

@CodeError,链接已失效。 - InnocentKiller
@InnocentKiller 先生。我已经修复了一些小问题,因此将其删除。感谢您的关注 (y)。祝编码愉快 :)。 - user3177895

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