1

我在我的应用程序中使用带有 ActionBarSherlock 的SlidingMenu,我实现它的方式是制作一个BaseActivitywhich extends SlidingFragmentActivity(类似于他们在示例中显示的方式。我的应用程序中的所有其他活动都扩展了这个 BaseActivity。

但是目前,当我在 App 中从左侧滑动时,包括 ActionBar 在内的整个活动都会滑动。我只希望内容滑动。所以查看文档,我认为添加这个应该可以做到:menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

但我收到该行的错误 -

java.lang.IllegalStateException: This SlidingMenu appears to already be attached

这是 BaseActivity 的 onCreate 函数 -

@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);
    }

我应该在attachToActivity其他地方做吗?

4

2 回答 2

5

我最终通过从 Base 活动中删除它来解决它 - sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);

并将其添加到所有继承的活动的 onCreate 中:

setSlidingActionBarEnabled(false);

我猜这是来自一长串继承(myActivity --> BaseActivity ---> SlidingFragmentActivity --> SherlockFragmentActivity)

于 2013-09-20T01:20:34.040 回答
1

您使用了命令行:

SlidingMenu sm = getSlidingMenu();

并且您没有附加菜单,因为您的菜单已经附加。

使用命令:

sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); 

如果您创建一个新的 SlidingMenu 实例。像一个SlidingMenu menu = new SlidingMenu(this);

于 2013-11-15T12:57:33.527 回答