Sir, muss ich einzelnes Fragment für mehrere Tabs verwenden. Ich habe es mit FragmentStatePagerAdapter implementiert, aber nach dem Debuggen habe ich, dass einige der Registerkarten Daten anzeigt, aber nicht korrekt. Dies ist, weil getItem zweimal aufgerufen bitte helfen Sie mir so früh wie möglich.Für mehrere Tabs Single Fragment funktioniert nicht GetItem zweimal aufgerufen
Ich habe Argumente von getItem übergeben. Er übergibt Argumente zweimal, wenn getItem zweimal aufruft. daher überschreibt es Daten von Argumenten. Ich habe 6 Tabs, aber nur 1, 3 und 5 Tab zeigt Daten, aber Daten sind von 2, 4 und 6. Tab und 2, 4 und 6. Tab zeigt nichts auf dem Bildschirm.
funktioniert keine Lösung von früheren Fragen.
ViewPager-Code
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;
}
}
Hörer Registerkarte ändern:
@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();
}
}
Adapter
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);
}