我有一个包含 fragment 的 BottomNavigationView
,在其中一个 fragment 中我放置了选项卡,在这些选项卡中我想放置 fragment ,但我不知道该怎么做,这就是我所拥有的权利现在在界面中:
这是我在代码 fragment 中有选项卡并标记错误的代码
我必须添加或更改什么才能使其正常工作?
我的 fragment 代码:
public class HomeFragment extends Fragment {
private Toolbar supportActionBar;
public HomeFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
Toolbar myToolbar = (Toolbar) view.findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabLayout);
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_whatshot_black_24dp));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_person_black_24dp));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_phone_black_24dp));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewPager);
**Here it marks an error that I have wrong**
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int position = tab.getPosition();
viewPager.setCurrentItem(position);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
return view;
}
public void setSupportActionBar(Toolbar supportActionBar) {
this.supportActionBar = supportActionBar;
}
}
问题出在这一行
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
PagerAdapter 代码:
public class PagerAdapter extends FragmentStatePagerAdapter {
private int numberTabs;
public PagerAdapter(FragmentManager fm, int numberTabs) {
super(fm);
this.numberTabs=numberTabs;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new FragmentNovedades();
case 1:
return new FragmentCuenta();
case 2:
return new FragmentContacto();
default:
return null;
}
}
@Override
public int getCount() {
return numberTabs;
}
}
最佳答案
getSupportFragmentManager()
用于当您希望在 Activity 中拥有 fragment 时。但在您的情况下,您在 Fragment 中使用 tablayout。因此 tablayout 内的所有 fragment 都通过 getChildFragmentManager() 方法进行操作。您可以阅读有关 getChildFragmentManager()
方法的更多信息 here
关于android - 将 fragment 放入另一个包含选项卡的 fragment 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44815809/