スライド メニュー (jeremy feinstein から) と actionbarsherlock を使用したプロジェクトがあります。何らかの理由で、アクティビティが表示されると、スライド メニューも自動的に開きます。
アプリのアーキテクチャに関する簡単なメモ: すべてのアクティビティにスライド メニューが統合されており、メニュー項目をクリックすると、関連するアクティビティが開始されます (FLAG_ACTIVITY_SINGLE_TOP を使用)。私のすべての活動は、以下に示すクラスを拡張します。
ユーザーが 1 つの項目をクリックするたびに、メニューが展開され、ユーザーがそれを閉じる必要があるため、これは非常に面倒です。
この動作の原因を知っている人はいますか? それを修正して期待どおりの動作をさせるにはどうすればよいですか。
関連するコードの下に投稿します。
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;
}
}
actionbarsherlock も画像に含まれている場合、Jeremy Feinstein の公式ページで提案されているように、SlidingFragmentActivity が変更され、SherlockFragmentActivity が拡張されました。