안드로이드 Tabbed Activity에서 fragment관련 질문사항이 있습니다.
조회수 3197회
안녕하세요! 다름이아니라 Tabbed Activity에서 fragment 를 3개를 둬서 한 Activity를 만들고 있습니다. 만약 focus가 특정 fragment에 맞춰질 때, thread를 발생시켜서 어떠한 작업을 수행할려고합니다. 계속해서 Tabbed Activity를 실행시키면, 모든 fragment가 한번에 다 실행되더라구요...
예를 들면, 한 activity에 fragment A,B,C가 있다면,
A에서 B로 움직일 때(focus가 B로 바뀌어질 때), B의 fragment만 thread를 발생시키고 싶습니다. 또한 다시 A로 갔다가 또 다시 B로 바뀌어졌을 때도 다시 한번 B의 fragment에서 thread를 발생시키고 싶습니다...!
focus에따라 fragment가 발생시킬 수 없나여?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
다음 방법 중 하나를 이용해서 포커스를 받았을 때 특정 기능을 수행할 수 있습니다.
첫번째 방법, TabLayout의 OnTabSelectedListener를 사용하는것 입니다. 참고로 TabLayout이 inflate되는 최초 한번은 콜백이 호출되지 않습니다. 따라서 이 부분을 고려하셔서 작업을 해야됩니다.
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } });
두번째 방법, Fragment의 setUserVisibleHint(boolean) 콜백을 사용하는 것입니다. 화면에 보여질 때 isVisibleToUser 파라미터가 true로 전달되는데 이 값을 이용해서 원하는 처리를 할 수 있습니다.
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력