* 정의부 (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()를 호출해 주었다.
(이런 식으로 하는 게 맞는 지 모르겠넹 ㅋ)