Android 将片段放入另一个包含选项卡的片段中?

Android 将片段放入另一个包含选项卡的片段中?,android,android-fragments,Android,Android Fragments,我有一个BottomNavigationView,其中包含片段,我在其中一个片段中放置了选项卡,我想在这些选项卡中放置片段,但我不知道如何操作,这就是我现在在界面中看到的: 这是我在代码段中有选项卡的代码,并标记了错误 我必须添加或更改什么才能使其工作 我的片段代码: public class HomeFragment extends Fragment { private Toolbar supportActionBar; public HomeFragment() { } @Overri

我有一个
BottomNavigationView
,其中包含片段,我在其中一个片段中放置了选项卡,我想在这些选项卡中放置片段,但我不知道如何操作,这就是我现在在界面中看到的:

这是我在代码段中有选项卡的代码,并标记了错误
我必须添加或更改什么才能使其工作

我的片段代码:

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;
   }

   }
 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;
}
}
问题就在这方面

  PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
PagerAdapter代码:

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;
   }

   }
 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;
}
}

您应该使用子FragmentManager来管理片段中的片段


如果需要支持库,则需要导入正确的片段类

getSupportFragmentManager()
,以便在活动中包含片段。但在您的例子中,您正在片段内部使用tablayout。因此,tablayout中的所有片段都使用
getChildFragmentManager()
方法进行操作。您可以阅读更多关于
getChildFragmentManager()
method

我该怎么做?我是编程新手,我不知道该怎么称呼他,我不知道他是否能帮我。用getSupportFragmentManager()替换活动中的片段的方法,用getChildFragmentManager()替换片段中的片段的方法,一切都会顺利进行。我知道这对初学者来说很难,但如果你能花点时间,你可以做到it@CarlosMario如果您在文档中搜索“ChildFragmentManager”,它将为您提供所需信息@谢谢你的回复。我会看看这个方法是如何工作的。@cricket_007谢谢你的链接。谢谢你,我不知道我可以使用这个方法,我会把它付诸实施,我会看看它是如何工作的。