이번에 소개할 내용은 프래그먼트들에게서 키보드(SoftInput 또는 keypad)를 내리는 방법이다.
(누군가 더 좋은 방법을 소개시켜준다면 기꺼이 교체할 생각이 있다.)
시작해보자.
일단 이런 동작이 필요하게 된 배경은 이러하다.
흔히 사용하는 BottomNavigationView의 메뉴 아이템을 선택해 다른 프래그먼트를 보여줘야 할 때,
이전 프래그먼트에서 입력하던 사항이 있다면 키보드를 내리면서 프래그먼트가 전환되어야 한다.
안드로이드에 익숙한 개발자라면 키보드 내리는 동작은 익숙해져 있을 것이다.
나에게 문제는 이 동작을 어디서, 얼마나 실행하느냐가 문제였다.
그래서 프래그먼트가 교체되는 ItemSelectedListener에서 실행해주었다.
여기서 기존에 모든 프래그먼트를 hide시킨 뒤, when을 통해 선택한 메뉴의 프래그먼트를 보여주게 코드를 작성해두었었다.
모든 프래그먼트를 hide시킬 때, 각 프래그먼트마다 clearFocus를 해주고 hideSoftInputFromWindow를 해주었다.
이렇다 보니 hide, clearFocus, hideSoftInputFromWindow를 다른 함수 하나로 묶어버렸다.
바로 아래에 코드를 첨부해보도록 하겠다.
https://gist.github.com/BonusTrack02/268ab1a88fa9cd57aa47d8cc28955500
여기서 for문의 인덱스는 내가 사용한 메뉴가 총 3개여서 3까지 반복했지만 5까지 반복하는 상황도 있으리라 생각한다.
추가로, 나의 경우엔 프래그먼트를 destroy시키지 않는데 만약 BottomNavigationView에서
메뉴 선택 시마다 이전 프래그먼트를 지워버린다면 함수를 수정해야할 것이다.
'Android' 카테고리의 다른 글
Android DateRangePicker Custom Settings - 2. Current Date (0) | 2023.10.24 |
---|---|
Android DateRangePicker Custom Settings - 1. Modal (0) | 2023.10.22 |
Codelab으로 Room 알아보기 - 3. Create the DAO (0) | 2023.09.23 |
Android BottomSheet Material Theme 적용하기 (0) | 2023.09.15 |
Android BottomNavigationView Uncheck All Items (0) | 2023.09.13 |