android4 Android - Fragment에서 Activity로 값 전달하기 하나의 Activity에 다수의 Fragment를 사용하는 구조는 이제 대다수의 앱에서 매우 일반적인 구조이다. 그렇다면 Fragment에서 Activity로 값을 전달하는 경우는 어떻게 하면 좋을까. 정답은 매우 단순하다. 바로 리스너를 사용하면 된다. 우선 리스너 인터페이스를 정의한다. public interface DataPassListener { void onMsg(String msg); } Fragment에서 Activity로 String 타입의 msg를 보내려고 할 때 사용하려고 한다. Fragment에서는 onAttach에 해당 리스너를 등록해준다. public class MyFragment extends Fragment { private DataPassListener listener; /*.. 2022. 11. 27. Android Navigation 사용하기 정말 단순한 작업을 하는 앱이거나 게임이 아닌 이상 대부분의 앱에서 내비게이션바를 쉽게 발견할 수 있을 것이다. 이번에 회사에서 작업하는 앱도 내비게이션 메뉴가 있어야 하는데 Material Component인 BottomNavigationView를 사용하였다. BottomNavigationView | Android Developers developer.android.com 내비게이션 메뉴를 직접 개발해 본 것은 처음이라, 이번에 알게 된 내용을 정리해 두는 것이 좋겠다고 생각되었다. 이 포스트에서는 아주 기본적인 사용법을 안내할 것이다. 기본 사용법 기본적인 구조는 NavigationView를 포함하는 Acitivity에서 메뉴를 선택할 때마다 그에 해당하는 Fragment로 전환(Transition).. 2022. 10. 9. RecyclerView.Adapter 사용 시 앱 기본테마가 적용 안되는 문제 회사에서 급하게 안드로이드 프로젝트에 투입되었는데, 외주로 오신 분이 주신 리사이클러뷰를 사용한 비디오 슬라이딩 뷰 작업 하신거에 버튼을 추가할 일이 생겼다. 그런데 엥? 버튼의 테마가 안드로이드 스튜디오의 Design뷰에서는 잘 나오는데 실제로 실행하니 기본 안드로이드 테마가 아니라 아주 예전에 쓰던 회색 바탕의 못생긴 버튼이 출력되었다. 위 영상을 보면 BUTTON IN MAIN 버튼은 VideoPage2 바깥, 즉 리사이클러 뷰 바깥에 메인엑티비티 쪽에서 생성한 것이다. 테마가 잘 적용되었다. 그런데 Page 로 시작하는 버튼들은 리사이클러뷰 안에 있는 버튼이고 내가 아무 스타일도 주지 않았으니 같은 테마여야 하는데 저렇게 나왔다. 구글에 정말 모든 가능한 키워드 조합으로 검색해봐도 저런 경우가 없.. 2022. 9. 14. Thread 내에서 Toast 띄우기 문제점 스레드가 돌다가 특정 조건을 만족하면 토스트를 띄우게 하려고 했으나, 다음과 같은 예외가 발생한다. Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 이유 UI에 영향을 주는 스레드는 메인스레드가 담당한다. 그 이유를 찾아보고 이해한 바는 다음과 같다. 만약의 (그림 1) 처럼 하나의 UI Control에 하나 이상의 스레드가 동시에 접근하여 값을 변경한다고 가정해보자. 이때 TextView는 어떤 값을 반영하여 사용자에게 보여줄 것인가? 이를 방지 하기 위해 메인스레드에서만 UI 관련 작업을 수행할 수 있는 것이다. 해결책 그렇다고 스레드 내에서 토.. 2022. 8. 2. 이전 1 다음