先生,我必須使用單個片段用於多個選項卡。我已經實現它使用FragmentStatePagerAdapter但調試後,我得到了一些標籤顯示數據,但不正確。這是因爲getItem兩次調用請儘早幫助我。對於多個選項卡單個片段不工作getItem被調用兩次
我已經從getItem傳遞了參數。它作爲getItem調用兩次傳遞參數兩次。因此它覆蓋了參數的數據。我有6個選項卡,但只有1,3和5選項卡顯示數據,但數據是2,4和6選項卡和2,4和6選項卡不顯示屏幕上的任何內容。
無法解決上述問題。
ViewPager代碼
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
int TAB_COUNT=5;
Context mContext;
public ViewPagerAdapter(FragmentManager fm,Context context) {
super(fm);
mContext=context;
}
@Override
public Fragment getItem(int position) {
NewsFragment fragment = new NewsFragment();
Bundle args = new Bundle();
args.putString("title", String.valueOf(getPageTitle(position)));
args.putString("data", "data");
fragment.setArguments(args);
return fragment;
}
@Override
public CharSequence getPageTitle(int position) {
return mContext.getResources().getStringArray(R.array.tabs)[position];
}
@Override
public int getCount() {
return TAB_COUNT;
}
}
聽衆改變標籤:
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onPageSelected(int position) {
TabLayout.Tab tab = tabLayout.getTabAt(position);
if (tab != null) {
tab.select();
}
}
適配器設置
private void setUpTab() {
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), this);
for (int i = 0; i < viewPagerAdapter.getCount(); i++) {
tabLayout.addTab(
tabLayout.newTab()
.setText(viewPagerAdapter.getPageTitle(i)));
}
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewPager.setAdapter(viewPagerAdapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
viewPager.addOnPageChangeListener(this);
tabLayout.addOnTabSelectedListener(this);
}