android - 将 fragment 放入另一个包含选项卡的 fragment 中?

标签 android android-fragments

我有一个包含 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/

相关文章:

javascript - 在AVD(android studio)中运行的 native android浏览器中调试网站

android - 调用 soap wsdl web 服务 android

android - 无法在具有 WPA/WPA2 安全性的企业网络上使用 Android。总是掉线?

android - 如何在 android 中使用 android-support-v4.jar 禁用 ViewPager 滑动

java - 调用超父类(super class)onResume()和onCreae()

Android 可绘制对象(图标)列表

java - 如何通过 Android 发送 Flash(通知)短信?

android - 使用 SharedPreferences 强制发送数据(在 PagerAdapter 中 fragment 到 fragment )

android - 如何获取 ViewModel?

android - Android Activity 中保存的实例状态未保留的保留 fragment