Как заставить SlidingMenu скользить только по содержимому, а не по панели действий

Я использую SlidingMenu с ActionBarSherlock в своем приложении, и я реализовал это, создав BaseActivity, который расширяет SlidingFragmentActivity (аналогично тому, как они показаны в пример ). Любая другая активность в моем приложении расширяет эту BaseActivity.

Но в настоящее время, когда я двигаюсь слева в приложении, вся активность, включая слайды ActionBar. Я только хочу, чтобы содержимое скользило. Итак, глядя на документы, я решил, что добавление этого должно сделать это: menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

Но я получаю ошибку для этой строки -

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

Вот функция onCreate для BaseActivity:

@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 в другом месте?


person Ayrton Senna    schedule 14.09.2013    source источник


Ответы (2)


В конце концов я решил это, удалив это из базовой активности - sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);

и просто добавив это в onCreate всех унаследованных действий:

setSlidingActionBarEnabled(false);

Я предполагаю, что это происходит из-за длинной линии наследования (myActivity --> BaseActivity ---> SlidingFragmentActivity --> SherlockFragmentActivity)

person Ayrton Senna    schedule 20.09.2013
comment
Я не могу этого понять, я пробовал вышеизложенное, но все же не могу прокручивать по горизонтали пейджер или галерею в своем фрагменте. Любые подсказки? - person abhishek; 15.08.2014

Вы использовали командную строку:

SlidingMenu sm = getSlidingMenu();

и вы не прикрепили свое меню, потому что ваше меню уже прикреплено.

используйте команду:

sm.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); 

если вы создадите новый экземпляр SlidingMenu. Как SlidingMenu menu = new SlidingMenu(this);

person Serg Vorontsov    schedule 15.11.2013