1

私はアプリで ActionBarSherlock を使用してSlidingMenuを使用していますが、それを実装する方法は、BaseActivitywhich extendsを作成することです (SlidingFragmentActivityで示した方法と同様)。私のアプリの他のすべてのアクティビティは、この BaseActivity を拡張します。

しかし、現在、アプリで左からスライドすると、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 に答える