私は今これで頭を悩ませています.... 私はActionBarActivity
イニシャルをロードするを持っていますFragment
- 元のメニューはアクティビティ内で膨らみます。これで、アイテムが選択されたときに別のフラグメントをロードし、これをバックスタックに追加するナビゲーション バーができました。
これを行うとき、設定したいことがいくつかあります。
- ホームをアップ インジケーターとして設定する
- メイン アクティビティのオプション メニューを無効にする
- セットには、フラグメントに対して true のオプションがあります
- アップ インジケーターが元のフラグメントに正しく戻ることを確認します。
かなり奇妙なことが起こっています - アップインジケーターは一度だけ表示され、戻るボタンとして動作しません.新しいメニューを無効にして膨らませましたが、新しいメニューは元のアクティビティメニューに追加されます.
編集:menu.clear()
わかりました、追加の問題を解決しました-メソッドに追加するのを忘れましたonCreateOptionsMenu
。
私のナビゲーション ドロワー レイアウトにはonClick
、別の Fragment の読み込みをトリガーするすべてのメニュー項目へのメソッドがあります。
public void navItemClick(View view) {
switch (view.getId()) {
case R.id.ripSMS:
mNavigationDrawer.toggleHome(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction mTrans = getSupportFragmentManager().beginTransaction();
mTrans.replace(R.id.voiceover_frame_layout,new MessageFragment(),"main_ui")
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack("msg").commit();
break;
case R.id.ripEmail:
break;
case R.id.ripSettings:
break;
}
mNavigationDrawer.closeDrawer();
}
トグルホーム:
public void toggleHome(boolean show) {
mDrawerToggle.setDrawerIndicatorEnabled(show);
if (!show) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
} else {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
}
アイテムがトリガーされるonCreate
と、invalidate と hasOptions コードが含まれます。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().invalidateOptionsMenu();
setHasOptionsMenu(true);
}
次にonCreateOptionsMenu
、別のメニュー レイアウトを拡張します (設定と呼ばれる 1 つの項目を含みます)。
前述のように、これは部分的に 1 回しか機能しません。最初にアイテムを使用してフラグメントをロードすると、戻るアイコンが表示されますが、機能しません (これはonOptionsItemSelected
、ホーム アイテムのプレスをチェックするために設定されています。何もしません)。戻るボタンを押すと、正しい場所に戻ります。ただし、戻ると、コードが実行されても戻る矢印が表示されなくなりましたonCreate
。