2016-11-06 2 views
0

Это мой метод onCreate(). Я хочу загрузить только одну вкладку в экземпляр. но он также загружает следующую вкладку. Как я могу сделать только одну загрузку вкладок, когда я вызываю эту страницу. И если я перейду к следующей вкладке, она должна загрузиться только тогда.Как сделать только одну вкладку в макете табуляции

 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

Declare:

boolean hasVisitedFragmentOnce=false; 

Теперь измените setUserVisibleHint() функцию в следующем:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 

    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser && !hasVisitedFragmentOnce) { 

     hasVisitedFragmentOnce = true; 
     //do your stuff 

    } else { 

     // fragment is no longer visible 

    } 
}