如何在活动启动时显示“滑动菜单”?

我正尝试使用Jeremy Feinstein出色的图书馆滑动菜单 。

对于我的情况,这将是非常好的,如果活动是与滑动菜单打开如

在这里输入图像说明

而不是像滑动菜单closures

在这里输入图像说明

我试图把toggle()在活动,但没有用。

SlidingSherlockFragmentActivity

它与SlidingFragmentActivity相同,除了扩展SherlockFragmentActivity而不是FragmentActivity。

BaseActivity

 public class BaseActivity extends SlidingSherlockFragmentActivity { private int mTitleRes; protected ListFragment mFrag; public BaseActivity(int titleRes) { mTitleRes = titleRes; } private static final String TAG = "BaseActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(mTitleRes); // set the Behind View setBehindContentView(R.layout.menu_frame); FragmentTransaction t = this.getSupportFragmentManager().beginTransaction(); mFrag = new SampleListFragment(); t.replace(R.id.menu_frame, mFrag); t.commit(); // 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); getSupportActionBar().setDisplayHomeAsUpEnabled(true); sm.setOnOpenListener(new SlidingMenu.OnOpenListener() { @Override public void onOpen() { Log.d(TAG, "onOpen"); } }); sm.setOnOpenedListener(new SlidingMenu.OnOpenedListener() { @Override public void onOpened() { Log.d(TAG, "onOpened"); } }); sm.setOnCloseListener(new SlidingMenu.OnCloseListener() { @Override public void onClose() { Log.d(TAG, "onClose"); } }); sm.setOnClosedListener(new SlidingMenu.OnClosedListener() { @Override public void onClosed() { Log.d(TAG, "onClosed"); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: toggle(); return true; } return super.onOptionsItemSelected(item); } 

}

FlipperCheck

 public class FlipperCheck extends BaseActivity { private ViewFlipper flipper; private TextView secondaryText; public FlipperCheck() { super(R.string.app_name); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setSlidingActionBarEnabled(true); setContentView(R.layout.main); flipper = (ViewFlipper) findViewById(R.id.voicerecorder_textflipper); flipper.startFlipping(); flipper.setInAnimation(AnimationUtils .loadAnimation(getApplicationContext(), android.R.anim.fade_in)); flipper.setOutAnimation(AnimationUtils .loadAnimation(getApplicationContext(), android.R.anim.fade_out)); secondaryText = (TextView) findViewById(R.id.voicerecorder_secondarytext); secondaryText.setText("Why cannot I see u..."); final TextView firstText = (TextView) findViewById(R.id.firsttext); final TextView secondText = (TextView) findViewById(R.id.secondtext); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { stopFlipper(); flipper.setVisibility(View.INVISIBLE); secondaryText.setVisibility(View.VISIBLE); } }); Button secondButton = (Button) findViewById(R.id.second_button); secondButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { firstText.setText("Replaying"); secondText.setText("Replaying"); } }); } @Override protected void onStart() { super.onStart(); toggle(); } private void stopFlipper() { flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() { public void onAnimationStart(Animation animation) { } public void onAnimationRepeat(Animation animation) { } public void onAnimationEnd(Animation animation) { int displayedChild = flipper.getDisplayedChild(); int childCount = flipper.getChildCount(); if (displayedChild == childCount - 1) { flipper.stopFlipping(); } } }); } } 

[编辑2]

看起来像onStart() toggle()是在活动显示之前激活滑动菜单的打开和closures。

 01-01 19:27:53.780: D/BaseActivity(351): onOpen 01-01 19:27:53.780: D/BaseActivity(351): onOpened 01-01 19:27:53.780: D/BaseActivity(351): onClose 01-01 19:27:53.790: D/BaseActivity(351): onClosed 01-01 19:27:54.241: D/dalvikvm(351): GC_EXTERNAL_ALLOC freed 2725 objects / 223104 bytes in 80ms 01-01 19:27:54.370: D/dalvikvm(351): GC_EXTERNAL_ALLOC freed 290 objects / 12352 bytes in 75ms 01-01 19:27:54.520: I/ActivityManager(59): Displayed activity com.abc.FlipperCheck/.FlipperCheck: 3084 ms (total 3084 ms) 

我的问题

在使用Android库“滑动菜单”时如何使用滑动菜单打开活动?

Solutions Collecting From Web of "如何在活动启动时显示“滑动菜单”?"

您可以使用:

 @Override public void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); new Handler().postDelayed(new Runnable() { @Override public void run() { toggle(); } }, 1000); } 

如果从一个SlidingActivity类inheritance,有一个更好的方法可以做到这一点,而无需自己发布给Handler

 @Override public void onPostCreate(Bundle savedInstanceState) { if (savedInstanceState == null) { savedInstanceState = new Bundle(); savedInstanceState.putBoolean("SlidingActivityHelper.open", true); } super.onPostCreate(savedInstanceState); } 

这可以工作,因为SlidingActivityHelper从保存的实例状态恢复菜单打开/closures状态。 如果没有保存状态,则将其设置为默认状态并没有什么坏处。

 getSlidingMenu().post(new Runnable() { @Override public void run() { getSlidingMenu().showMenu(); } }); 

把它放在创造为我做的伎俩。