Я хотел реализовать вкладки смахивания в динамически генерируемом фрагменте (у него нет файла макета), и я не знаю как.Я пробовал что-то, достигая некоторых «результатов», под этим я подразумеваю, что это показывает мне макет вкладки, но он не «загружает» фрагменты.Я подозреваю, что проблема с пейджером представления, в объявлении. Вот код фрагмента:
public class fg_tabs extends Fragment {
LinearLayout root;
TabLayout tab_layout;
ViewPager view_pager;
PagerAdapter pager_adaper;
public fg_tabs() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
root = new LinearLayout(getActivity());
root.setOrientation(LinearLayout.VERTICAL);
tab_layout = new TabLayout(getActivity());
view_pager = new ViewPager(getActivity());
view_pager.setCurrentItem(2);
tab_layout.addTab(tab_layout.newTab().setText("Penguins"));
tab_layout.addTab(tab_layout.newTab().setText("North Wind"));
tab_layout.addTab(tab_layout.newTab().setText("Dr Octavious Brine"));
tab_layout.setTabGravity(Gravity.FILL);
pager_adaper = new PagerAdapter(getFragmentManager(),tab_layout.getTabCount());
view_pager.setAdapter(pager_adaper);
view_pager.setOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab_layout));
tab_layout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
view_pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
root.addView(tab_layout);
return root;
}
}
, и вы, возможно, захотите взглянуть на то, как я звонюэтот фрагмент, посмотрите, если что-то не так:
fg_tabs tabs = new fg_tabs();
FragmentManager fm= getSupportFragmentManager();
fm.beginTransaction().replace(R.id.layout_frame,tabs).commit();
класс адаптера пейджера:
открытый класс PagerAdapter extends FragmentStatePagerAdapter {int n;
public PagerAdapter(FragmentManager fm,int n) {
super(fm);
this.n=n;
}
@Override
public Fragment getItem(int position) {
if(position == 0)
return new Penguins();
if(position == 1)
return new NorthWind();
if(position == 2)
return new DrOctaviousBrine();
return null;
}
@Override
public int getCount() {
return n;
}
}