为什么带有actionbarsherlock的Android libslide菜单会自动打开?

时间:2013-06-25 20:16:01

标签: actionbarsherlock slidingmenu

我有一个带滑动菜单(来自jeremy feinstein)和actionbarsherlock的项目。 出于某种原因,当活动显示时,幻灯片菜单也会自动打开。

关于我的应用架构的快速说明: 我的所有活动都集成了幻灯片菜单,单击菜单项我启动相关活动(使用FLAG_ACTIVITY_SINGLE_TOP)。 我的所有活动都扩展到下面显示的类。

这非常烦人,因为每次用户点击一个项目时,菜单都会展开,并强制用户将其关闭。

有谁知道是什么导致了这种行为? 我该怎么做才能解决它并达到预期的行为。

我在相关代码下面发帖:

package com.example.mypapp;

import com.example.mypapp.R;
import ocom.example.mypapp.SampleListFragment;

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;

import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

public class MyAppBaseActivity extends SlidingFragmentActivity {

    protected ListFragment mFrag;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setBehindContentView(R.layout.menu_frame);
        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);

        if (savedInstanceState == null) {
            FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
            mFrag = new SampleListFragment();
            t.replace(R.id.menu_frame, mFrag);
            t.commit();
        } else {
            mFrag = (ListFragment)this.getSupportFragmentManager().findFragmentById(R.id.menu_frame);
        }

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            toggle();
        }
        return true;
    }


    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
     super.onPrepareOptionsMenu(menu);
     toggle();
     return true;
    }

}

修改了SlidingFragmentActivity以扩展SherlockFragmentActivity,正如Jeremy Feinstein官方网页上所建议的那样,当actionbarsherlock也出现在图片中时。

0 个答案:

没有答案