Android

상단 Navigation의 옵션메뉴 추가

Dean83 2022. 6. 13. 13:24

Fragment에서 설정해야 한다. 

 

1. 메뉴 아이템 추가
    - 프로젝트의 res -> 마우스 우클릭 -> new -> Android Resource File -> type에서 메뉴 선택
    - 추가된 메뉴 레이아웃에 메뉴 아이템 추가

    
2. 프래그먼트에 코드 추가
    - 생성자 쪽에 setHasOptionsMenu(true) 추가
    - 다음의 함수 오버라이드

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        super.onCreateOptionsMenu(menu, inflater)
        //R.menu.menu는 위에서 추가한 menu 레이아웃
        inflater.inflate(R.menu.menu,menu)
    }

3. 옵션 아이템 추가 함수 오버라이드

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
    //할일 또는 기본항목 리턴
        return 할일 || super.onOptionsItemSelected(item)
    }

4. 옵션 선택을 통한 페이지 이동

    - 주로 옵션선택시 프래그먼트 이동을 하게 되므로 다음의 작업을 해야함. 
    - 위에서 추가한 menu.xml -> menuitem의 id를 navigation.xml의 이동할 fragment의 아이디와 동일하게 설정한다. 
       - navigation.xml 에 추가한 fragment들의 아이디를 확인한다. 

   예) navigation.xml 에 추가한 fragment들 중, 옵션을 클릭하였을때 이동할 fragment아이디가 frag1이라면, 
        menu.xml의 menuitem 아이디도 동일하게 frag1로 설절해야 한다. 

    - 3. 에서 오버라이드한 함수를 수정한다. 

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return NavigationUI.onNavDestinationSelected(item,requireView().findNavController()) || super.onOptionsItemSelected(item)
    }