안드로이드 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가 발생시킬 수 없나여?

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.