サイドナビゲーションに新しいDrawerLayout
を使用しています。このような引き出しアイコン(「ハンバーガー」)を使用しています。
@Override
protected void onStart() {
super.onStart();
mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout);
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_navigation_drawer,
R.string.app_name,
R.string.app_name);
mDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
}
ただし、Fragment
をバックスタックに追加するとき、ユーザーが「ホーム」に戻ってアプリの引き出しを開くことができるように、戻る矢印を再度表示する必要があります。
引き出しアイコンを背面アイコンにリセットするにはどうすればよいですか?
私が望む矢印:
DrawerToggle "Hamburger"を無効にして非表示にするには、
mDrawerToggle.setDrawerIndicatorEnabled(false);
ホスティングアクティビティ用のインターフェイスを作成して、ハンバーガーメニューの表示状態を更新しました。最上位レベルのフラグメントの場合、トグルをtrue
に設定し、上矢印を表示するフラグメントの場合、トグルをfalse
に設定します。
public class SomeFragment extends Fragment {
public interface OnFragmentInteractionListener {
public void showDrawerToggle(boolean showDrawerToggle);
}
private OnFragmentInteractionListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
this.mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener");
}
}
@Override
public void onResume() {
super.onResume();
mListener.showDrawerToggle(false);
}
}
その後、私の活動で...
public class MainActivity extends Activity implements SomeFragment.OnFragmentInteractionListener {
private ActionBarDrawerToggle mDrawerToggle;
public void showDrawerToggle(boolean showDrawerIndicator) {
mDrawerToggle.setDrawerIndicatorEnabled(showDrawerIndicator);
}
}