1

私はアプリケーションでタブを操作していますが、fragmentがロードされると、2つのフラグメントのデータがロードされます。どのように私はクロックtabは、それがどのようにこのページャが複数のフラグメントデータを一度に読み込む

を行う唯一のこのタブのデータをロードしたときに、このビューのページャのための私のコード //タブ選択したイベントのために

private TabLayout.OnTabSelectedListener onTabSelectedListener(final ViewPager viewPager) { 

    return new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }; 
} 

private void setupViewPager(ViewPager viewPager) { 
    //int numberOfPages = 0; 

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Matches_Tab(), "Matches"); 
    adapter.addFragment(new NewMatches_Tab(), "New matches"); 
    adapter.addFragment(new Similar_Matchs_Tab(), "Similar Matches"); 
    adapter.addFragment(new ShortlistTab(), "ShortListed"); 
    adapter.addFragment(new Viewed_My_Profile(), "View My Profile"); 
    adapter.addFragment(new ShortListedMeTab(), "ShortListed Me"); 
    adapter.addFragment(new Photo_Request_Received(), "Photo Request Received"); 
    //viewPager.setOffscreenPageLimit(numberOfPages); 
    viewPager.setAdapter(adapter); 
    //viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    //onTabSelectedListener(viewPager); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    //Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

// view pager 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) { 
     return mFragmentList.get(position); 
    } 

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

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

答えて

0

を使用できsetUserVisibleHintであるthat是正する:

@Override 
    public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 
     if(isVisibleToUser){ 
      //You can do inside this method 
     } 
    } 
} 

このフラグメントが画面の前にある場合はtrueを返し、内部に必要なものはすべて行います。断片は、以下のようsetUserVisibleHintメソッドをオーバーライドすることにより表示されたときにデータをロードし

+0

このメソッドの使い方 – user6734679

0

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     //Load your data here ... 
    } 
} 

が第二setOffScreenPageLimit(0)デフォルトOFFスクリーン値によってように動作しません1と< 1が動作しない値です。

+0

このメソッドをフラグメントで使用する方法は? – user6734679

関連する問題