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

时间:2014-03-20 10:41:51

标签: android onclick slidingmenu buttonclick

我正在使用此link实现滑动菜单。现在,如果我在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;
    }

}

但是当我点击按钮时,滑动菜单没有打开。我没有收到任何错误。我怎么能这样做?

1 个答案:

答案 0 :(得分: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;
  }

}