반응형
DrawerLayout
- 좌측 상단의 네비게이션을 누르면 좌측에서 메뉴 나타나는 UI
- 대부분 다 구현되어 있기 때문에 필요한 부분만 커스텀 -> Drawer Navigation Activity를 사용하면 대부분 코드 구현되어져서 제공
아놔...근데 자꾸 아래 같은 오류가 남. Drawer Navigation Activity를 사용하면서 Kotlin Plugin을 1.7.10 버전으로 업데이트 했는데 이게 문제인건지 뭔지....자꾸 ViewModel을 정의하라고 함...난 아직 MVVM 패턴을 공부할 준비가 안 되었다고...
✔️ 모든 액티비티에 ViewModelProvider 를 implements 하라는 오류 메세지 발생
알고봤더니 dependency에 viewmodel 관련 의존성이 추가되어 있어서 발생하는 문제. 이전처럼 코드를 사용하고 싶다면 이걸 주석처리 해주거나 지워주자!!
나처럼 프로젝트에 이것저것 예제 만들어 썼던 사람은 Drawer Navigation Activity가 메인으로 나타나게 하기 위해서 intent-filter 태그 설정 바꿔주기 ⬇️
구조
- 액티비티 레이아웃 : app_bar_drawer <include> 와 nav_view 로 구성
- <include> : 다른 레이아웃을 포함시키는 요소(다른 레이아웃을 복사해서 붙혀넣는 개념) -> 프래그먼트가 교체되는 화면 부분에 해당
- nav_view : 좌측에서 나타나는 부분 (header 와 menu 두 부분으로 나누어짐)
- app_bar_drawer 레이아웃 : toolbar 와 content_drawer <include> 와 floatingButton 으로 구성
- content_drawer <include> : 프래그먼트가 들어가는 부분
- content_drawer 레이아웃 : 프래그먼트를 관리하는 관리자 프래그먼트가 존재
Controller
- DrawerActivity가 교체할 프래그먼트를 관리하는 역할을 하고, 제공되는 Controller는 교체 처리 역할
- Controller에 프래그먼트만 세팅해주면 됨
- content_drawer 레이아웃에 배치되어 있는 프래그먼트가 컨트롤러 역할을 하게 됨 -> 이 프래그먼트에 교체한 프래그먼트가 세팅이 되는 구조
val navController = findNavController(R.id.nav_host_fragment_content_drawer)
mobile_navigation 네비게이션 파일
- Controller가 관리할 Fragment들을 등록
- 등록시 id 매우 중요 => 좌측 메뉴에서 선택한 메뉴의 id와 동일한 id가 셋팅되어 있는 프래그먼트가 화면에 나타남
- 메뉴 id는 모두 미리 설정 되어 있음 -> 개발자는 등록할 Fragment의 id를 메뉴의 id와 동일하게 처리하면 됨
[새로운 메뉴 만들어보기]
반응형
'Android' 카테고리의 다른 글
[안드로이드/데이터입출력] XML을 이용해 View 객체 생성 (0) | 2023.04.29 |
---|---|
[안드로이드/Error] ViewModelProvider.Factory 구현하라고 뜨는 오류 (0) | 2023.04.28 |
[안드로이드/AppBar] TabLayout (0) | 2023.04.28 |
[안드로이드/AppBar] AppBar Layout (2) | 2023.04.28 |
[안드로이드/ViewPager/ToolBar] ViewPager2 (0) | 2023.04.27 |