본문 바로가기

fragment

[Android][DI] ViewModel onCleared 함수가 호출 되지 않을 때 Android Architecture Component 라이브러리에서 제공하는 ViewModel 클래스에서 onCleared라는 함수를 override 할 수 있습니다. 이 함수에서 ViewModel이 라이프사이클에서 종료가 되었을 때 호출 되어 불필요한 메모리를 초기화 시킵니다. (CompositeDisposable를 정의하여 onCleared 함수에서 clear를 시키기도 하죠.) 그런데 이상하게 ViewModel을 생성한 Activity나 Fragment를 종료 시켰는데 onCleared 함수가 호출이 되지 않을 때가 있다. 그럼 아래 두 가지를 테스트 해봐라. 1. Android Support 라이브러리 버전 확인 Android Support 라이브러리 버전이 27.1.0 이하일 경우 onClea.. 더보기
[Android] Glide Library 사용시 참고 사항 Glide Library를 이용하여 이미지를 로딩할 때, 아래와 같은 Exception이 발생하신 분은 한번 참고해보세요.Exception이 발생하지 않더라도 안정성을 위해 한번 보셔도 나쁘지 않을 듯 합니다. Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=refresh_main_navi_event flg=0x10 } in com.package.activity.user.MainActivity$6@283944fc at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:933) at android.os.Handler.handleCallbac.. 더보기
[Android] Get current fragment 현재 보여지고 있는 Fragment를 가지고 오고자 할 경우 아래 함수가 정말 유용하다. Activity에 Fragment를 넣을 시, replace나 add 함수를 통하여 특정 레이아웃에다가 설정을 하였을 것이다.ex>getSupportFragmentManager() .beginTransaction() .add(R.id.fragment_container, fragment) .commit(); 이럴 경우 아래 함수를 통하여 현재 Fragment를 가지고 올 수 있다. Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); R.id.fragment_container 라는 레이아웃에 포함된 Fragme.. 더보기
[Android] 현재 보여지고 있는 가장 최상위 Fragment 가져오기 public BaseFragment getVisibleFragment() { for (Fragment fragment: getSupportFragmentManager().getFragments()) { if (fragment.isVisible()) { return ((BaseFragment)fragment); } } return null; } 딱 소스를 보시자마자 알수 있듯이 현재 Stack에 있는 Fragment 중보이는 Fragment를 가져오는 소스 입니다. 참고하세요. 더보기
[Android] Fragment 이동 시, 계속 쌓이는 현상 방지 보호되어 있는 글입니다. 더보기
[Android][스크랩] Fragment LifeCycle 그림 2. 프래그먼트의 수명 주기( 소속 액티비티가 실행 중일 때). ragment Lifecycle(생명주기)Fragment의 가장 기본인 Lifecycle을 알아보자. 모든 것이든 기본이 가장 중요한만큼 하나하나 꼼꼼하게 분석 해보자. Fragment는 Activity와 비슷한 Lifecycle 구조를 가졌다.이전 Fragment 개념에 대해 간단히 언급 했듯이, Fragment는 Activity에서 작동하는 구조라고 소개 되었다.(2013/02/26 – [개발관련/Android] – Fragment 파헤치기 – 1. Fragment 개념)하지만 Activity보다 좀더 복잡하지만, 개념만 이해 한다면 쉽게 사용 할것 이다.FragmentTransaction으로 Fragment를 add, replac.. 더보기
[Android] Fragment 에서 showSoftInput이 안먹힐 때 Fragment로 이동한 후, showSoftInput을 하더라도 키보드가 보이지 않을 때가 있다. 그럴 경우 아래와 같이 requestFocus 함수를 먼저 호출 하자. EditText someEditText = (EditText)getActivity().findViewById(R.id.someEditText); someEditText.requestFocus(); InputMethodManager mgr = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); mgr.showSoftInput(someEditText, InputMethodManager.SHOW_IMPLICIT);http://stackoverflo.. 더보기
[Android] Fragment traisition Error - executePendingTransactions java.lang.IllegalStateException: Recursive entry to executePendingTransactions FragmentTransition을 이용하여 이동 할 경우, 위와 같은 에러가 발생할 수도 있다. 이럴 경우 이동할 Fragment에서 getSupportFragmentManager 나 getFragmentManager를 통하여 먼가 nested View를 설정하지 않았는지 확인이 필요하다. 예를 들어 FragmentTabHost 와 같은... 그럴 경우 아래와 같이 getChildFragmentManager 로 변경 하여서 사용하기 바란다. mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.tab_con.. 더보기