본문 바로가기

java2

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.
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.