* 정의부 (MainActivity > Navigation Drawer 생성)
protected void onCreate(Bundle savedInstanceState) { ... Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // actionbar 좌측에 뒤로가기 화살표 표시 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(drawerToggle); drawerToggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); ... }
* 정의부 (MainActivity > 뒤로가기 화살표 표시 및 기능 동적 전환 메서드)
/** * 액션바에 뒤로가기 화살표 표시 및 뒤로가기 기능 추가 * * @param enable true일 경우에만 뒤로가기 기능 추가를 수행한다. */ public void showBackArrowOnActionBar(boolean enable){ if (enable) { drawerToggle.setDrawerIndicatorEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (! toolbarNavigationListenerRegistered) { drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); toolbarNavigationListenerRegistered = true; // MainActivity에 멤버변수로 정의해 놓은 것 } }else{ getSupportActionBar().setDisplayHomeAsUpEnabled(false); drawerToggle.setDrawerIndicatorEnabled(true); drawerToggle.setToolbarNavigationClickListener(null); toolbarNavigationListenerRegistered = false; } drawerToggle.syncState(); // 이걸 호출해 주지 않으면 햄버거 버튼이 없어져버리는 현상이 발생한다!! }
* 호출부
- 각 페이지 Fragment가 초기화 될 때 onCreateView() 에서 EventBus로 showBackArrowOnActionBar()를 호출해 주었다.
(이런 식으로 하는 게 맞는 지 모르겠넹 ㅋ)