web-dev-qa-db-ja.com

引き出しアイコンを戻る矢印に戻す

サイドナビゲーションに新しい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をバックスタックに追加するとき、ユーザーが「ホーム」に戻ってアプリの引き出しを開くことができるように、戻る矢印を再度表示する必要があります。

引き出しアイコンを背面アイコンにリセットするにはどうすればよいですか?
私が望む矢印:

Navigation Drawer

43
nhaarman

DrawerToggle "Hamburger"を無効にして非表示にするには、

mDrawerToggle.setDrawerIndicatorEnabled(false);
72
Nipper

ホスティングアクティビティ用のインターフェイスを作成して、ハンバーガーメニューの表示状態を更新しました。最上位レベルのフラグメントの場合、トグルを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);
    }

}
2
Bill Mote