안드로이드 Tabbed Activity에서 fragment관련 질문사항이 있습니다.


안녕하세요! 다름이아니라 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가 발생시킬 수 없나여?


조회수 421


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);
}

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close