Android Menu deprecated

사용 언어: Kotlin 1.6.10
사용 버전: Android Studio 2021.1.1 Patch 2

안드로이드 Menu deprecated를 알아보겠습니다.


안드로이드에서 Jetpack 라이브러리를 사용하게 되는데요.
여기서 activity와 fragment의 변화가 있습니다.
androidx.fragment에서는 1.5.0-alpha04 버전부터, Menu 관련 API가 deprecated 됩니다.
https://developer.android.com/jetpack/androidx/releases/fragment#1.5.0-alpha04


androidx.activity에서는 1.4.0-alpha01부터 menu 관련 API들이 deprecated 됩니다.




이렇게 되면, 기본적으로 우리가 자주 사용하던 onOptionsItemSelected(MenuItem): Boolean, onPrepareOptionsMenu(Menu): Unit, onCreateOptionsMenu(Menu, MenuInflater): Unit 등이 deprecated 된다고 보면 됩니다.





그러면 어떻게 해야 하는지 알아봅시다.

우선 Activity에서의 사용법을 알아봅시다.



onCreate 안에 addMenuProvider를 적습니다.

addMenuProvider()




괄호 안에 MenuProvider를 줘야 합니다.

만약 MenuProvider를 외부에서 만들었다면 만든 MenuProvider를 넣으면 되고, 없다면 object를 통해 새로 만들어 줍니다.

addMenuProvider(object : MenuProvider {})





이제, MenuProvider에 필요한 요소들을 override 합니다.

필수적으로 override 해야 하는 것들은 onCreateMenu, onMenuItemSelected가 필요합니다.




이렇게 제공된 MenuProvider는 수동으로 제거해 줘야 합니다.

하지만, 귀찮잖아요? 그러면 activity의 lifecycle에 따라 제거되도록 만들 수 있습니다.

끝에 this를 적어줍니다.





적용할 내용을 변경해 줍니다.





addMenuProvider에 대해 자세히 알고 싶다면 아래 페이지를 참고해 주세요.




자, 이번엔 Fragment에서 사용하는 방법을 알아봅시다.

방식은 똑같습니다.

onViewCreated에 menuHost를 불러오고, 여기에 addMenuProvider를 하면 됩니다.





끝.


카테고리: Android


댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)