我在我的应用中使用SlidingMenu和ActionBarSherlock,我实现它的方式是制作BaseActivity
扩展SlidingFragmentActivity
(类似于menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
中显示的方式3}})。我的应用中的所有其他活动都扩展了此BaseActivity。
但是目前,当我从应用程序的左侧滑动时,包括ActionBar在内的整个活动都会滑动。我只想要内容滑动。所以看一下文档,我认为添加它应该这样做:java.lang.IllegalStateException: This SlidingMenu appears to already be attached
但我收到该行的错误 -
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(mTitleRes);
// set the Behind View
setBehindContentView(R.layout.menu_frame);
if (savedInstanceState == null) {
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
mFrag = new MenuListFragment();
t.replace(R.id.menu_frame, mFrag);
t.commit();
} else {
mFrag = (ListFragment)this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
}
// customize the SlidingMenu
SlidingMenu sm = getSlidingMenu();
sm.setShadowWidthRes(R.dimen.shadow_width);
sm.setShadowDrawable(R.drawable.shadow);
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
sm.setFadeDegree(0.35f);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// **** This following line causes the error *****
sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
这是BaseActivity的onCreate函数 -
attachToActivity
我应该在其他地方做{{1}}吗?
答案 0 :(得分:5)
我最终通过从Base活动中删除了它来解决它 - sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
并将其添加到所有继承的活动的onCreate中:
setSlidingActionBarEnabled(false);
我想这是来自一长串的继承(myActivity - > BaseActivity ---> SlidingFragmentActivity - > SherlockFragmentActivity)
答案 1 :(得分:1)
您使用了命令行:
SlidingMenu sm = getSlidingMenu();
并且您没有附上您的菜单,因为您的菜单已经附加。
使用命令:
sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
如果您创建SlidingMenu的新实例。
就像SlidingMenu menu = new SlidingMenu(this);