2016-11-06 2 views
0

이것은 내 onCreate() 메소드입니다. 인스턴스에 탭 하나만로드하려고합니다. 다음 탭도로드됩니다. 이 페이지를 호출 할 때 한 번만 탭로드를 만들 수 있습니다. 다음 탭으로 스 와이프하면로드해야합니다.tabbar 레이아웃에서 탭로드를 하나만 만드는 방법

 View x = inflater.inflate(R.layout.tab_layout,null); 
     tabLayout = (TabLayout) x.findViewById(R.id.tabs); 
     viewPager = (ViewPager) x.findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 
     tabLayout = (TabLayout) x.findViewById(R.id.tabs); 
     if (tabLayout != null) { 
      tabLayout.setupWithViewPager(viewPager); 
     } 
     setupTabIcons(); 
     return x; 
    } 
    private void setupTabIcons() { 
     tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
     tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
     tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
     tabLayout.getTabAt(3).setIcon(tabIcons[3]); 
     tabLayout.getTabAt(4).setIcon(tabIcons[4]); 
    } 
     private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
     adapter.addFrag(new Text(), "Text"); 
     adapter.addFrag(new Image(), "Image"); 
     adapter.addFrag(new Audio(), "Audio"); 
     adapter.addFrag(new Video(), "Video"); 
     adapter.addFrag(new Files(), "File"); 
     viewPager.setAdapter(adapter); 
    } 
    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      System.out.println("Tab set issssssssssss"+position); 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFrag(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 
    @Override public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 
    } 

} 

답변

0

선언 :

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 

    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser && !hasVisitedFragmentOnce) { 

     hasVisitedFragmentOnce = true; 
     //do your stuff 

    } else { 

     // fragment is no longer visible 

    } 
} 
:

boolean hasVisitedFragmentOnce=false; 

이제 다음으로 setUserVisibleHint() 기능을 변경

관련 문제