[Android] 액션바에 뒤로가기 화살표 표시 및 뒤로가기 기능 추가

By | 12월 29, 2020

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

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments