有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使幻灯片菜单只显示幻灯片内容而不显示操作栏

我在我的应用程序中将SlidingMenu与ActionBarSherlock一起使用,我实现它的方式是制作一个BaseActivity扩展SlidingFragmentActivity(类似于它们在example中显示的方式)。我的应用程序中的所有其他活动都会扩展此基本活动

但目前,当我在应用程序中从左侧滑动时,包括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


共 (2) 个答案

  1. # 1 楼答案

    我最终解决了这个问题,将其从基本活动中删除-sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);

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

    setSlidingActionBarEnabled(false);

    我猜这是一个很长的继承过程(myActivity>;BaseActivity->;SlidingFragmentActivity>;SherlockFragmentActivity)

  2. # 2 楼答案

    您使用了命令行:

    SlidingMenu sm = getSlidingMenu();
    

    您没有附加菜单,因为您的菜单已附加

    使用以下命令:

    sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); 
    

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