无法为片段中的 Viewpager 调用 getSupportFragmentMangager

Unable to call getSupportFragmentMangager for a Viewpager within a fragment

我正在尝试将一个 ViewPager 放在一个父片段中,它有几个片段作为页面。

我看到有一些与此相关的主题,但尚未找到任何可以解决我遇到的问题的主题。

我试过以下方法: getFragmentManager getChildFragmentManager getActivity().getSupportFragmentManager (AppCompatActivity(getActivity())).getFragmentManager

虽然 getActivity 确实有效,但我的其他方法变得“无法访问”,我不知道为什么。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_home, container, false);
    return view;

    initViews (view);
    Utils.getInstance(getActivity());

    CheckItemNull();


    myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
    myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);



    myVPAdatper = new MyVPAdapter(getActivity().getSupportFragmentManager(), myTabLO.getTabCount());
    myVP.setAdapter(myVPAdatper);
    myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));

    myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            myVP.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }

    });

碎片需要提交才能出现。

这是创建Fragment的基本结构

FragmentManager fragmentManager = getSupportFragmentManager();
Fragment myFragment = fragmentManager.findFragmentById(R.id.my_fragment);

if(myFragment == null)
{
    myFragment = new MyFragment();
    fragmentManager.beginTransaction().add(R.id.my_fragment, myFragment).commit();
}

嗯,我对代码还是个新手,但我认为方法中的关键字应该在代码的末尾而不是开头,因为当编译器读取代码时,它会在读取代码后完成整个过程关键字“return”如果方法有一个。

我认为您对 fragmentManager 的理解也有误。而不是:

getActivity().getSupportFragmentManager()

只用!

getSupportFragmentManager()

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_home, container, false);

    initViews (view);
    Utils.getInstance(getActivity());

    CheckItemNull();


    myTabLO.addTab(myTabLO.newTab().setText("Tab 1"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 2"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 3"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 4"));
    myTabLO.addTab(myTabLO.newTab().setText("Tab 5"));
    myTabLO.setTabGravity(TabLayout.GRAVITY_FILL);


    myVPAdatper = new MyVPAdapter(getSupportFragmentManager(), myTabLO.getTabCount());

    myVP.setAdapter(myVPAdatper);

    myVP.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(myTabLO));

    myTabLO.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            myVP.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
       return view;
    });

试一试!