我正在使用 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();
}
知道如何打开活动的二级菜单。谢谢
答案 0 :(得分:8)
要显示您可以使用的第二个菜单:
getSlidingMenu().showSecondaryMenu(true);
布尔参数是动画标志。
答案 1 :(得分: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);
}