Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在视图寻呼机内部使用视图寻呼机时,不显示子视图寻呼机的项_Android_Android Fragments_Navigation_Android Viewpager - Fatal编程技术网

Android 在视图寻呼机内部使用视图寻呼机时,不显示子视图寻呼机的项

Android 在视图寻呼机内部使用视图寻呼机时,不显示子视图寻呼机的项,android,android-fragments,navigation,android-viewpager,Android,Android Fragments,Navigation,Android Viewpager,在我的应用程序中,父视图寻呼机有5个片段,其中2个使用第二视图寻呼机,其中包含另外5个片段。对于父视图页导航,我使用底部导航。在child for navigation中,我使用了选项卡布局 问题是除了子视图页面的视图外,所有视图都显示在父视图页面中 我注意到,如果子视图页导航的项目显示在到达最后一个项目之后。例如,如果我到达最后一个项目,那么如果我转到第二个项目,那么它将显示 另外,如果我将在其位置内具有查看寻呼机的项目更改为第一个,那么当我盯着那个时间时,仅显示它的项目,但当我将父视图寻呼机

在我的应用程序中,父视图寻呼机有5个片段,其中2个使用第二视图寻呼机,其中包含另外5个片段。对于父视图页导航,我使用底部导航。在child for navigation中,我使用了选项卡布局

问题是除了子视图页面的视图外,所有视图都显示在父视图页面中

我注意到,如果子视图页导航的项目显示在到达最后一个项目之后。例如,如果我到达最后一个项目,那么如果我转到第二个项目,那么它将显示

另外,如果我将在其位置内具有查看寻呼机的项目更改为第一个,那么当我盯着那个时间时,仅显示它的项目,但当我将父视图寻呼机的项目更改为第二个,然后转到第一个,则会出现相同的问题

父视图寻呼机适配器的代码:

//***************-波顿导航法-***********

    public void BottomNavigationmethod(){
        bottomNavigationView.setOnNavigationItemSelectedListener(
                new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                        switch (item.getItemId()) {
                            case R.id.action_home:
                                viewPager.setCurrentItem(0);

                                break;

                            case R.id.action_rpm:
                                viewPager.setCurrentItem(1);


                                break;
                            case R.id.action_dataRecord:
                                viewPager.setCurrentItem(2);


                                break;
                            case R.id.action_spdRpm:
                                viewPager.setCurrentItem(3);


                                break;
                            case R.id.action_speed:
                                viewPager.setCurrentItem(4);
                                break;

                        }
                        return false;
                    }
                });
    }
//****************-查看寻呼机方法-******

  public void viewPagerMethod(){

        GetCurrentItem=String.valueOf(viewPager.getCurrentItem());

        Log.d("getcurrntinside",GetCurrentItem);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }


            @Override
            public void onPageSelected(int position) {
//                viewPager.getAdapter().notifyDataSetChanged();
                if (prevMenuItem != null) {
                    prevMenuItem.setChecked(false);
                }
                else
                {
                    bottomNavigationView.getMenu().getItem(0).setChecked(true);
                }    
                Position=String.valueOf(position);
                bottomNavigationView.getMenu().getItem(position).setChecked(true);
                prevMenuItem = bottomNavigationView.getMenu().getItem(position);

                OnViewPager=String.valueOf(bottomNavigationView.getMenu().getItem(position));


            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        setupViewPager(viewPager);
    }
菜单xml

我尝试了viewpager.getAdapter.notifyDatasetChanges在子视图pager的addOnPagerListen的各种事件中进行更改,但它冻结了应用程序

 getChildFragmentManager()
返回专用FragmentManager,用于在片段中放置和管理片段

 getSupportFragmentManager()
返回FragmentManager,用于与与此片段的活动关联的片段进行交互

在与子视图寻呼机相关的方法中

ViewpageAdapterFrg FirstAdapter=new ViewpageAdapterFrg(getChildFragmentManager());

FirstAdapter.fragmentAdd(new NormalRpmFragment(),"Normal");
FirstAdapter.fragmentAdd(new AwesomeRpmFragment(),"Awesome");
FirstAdapter.fragmentAdd(new PointerRpmFragment(),"Pointer");
FirstAdapter.fragmentAdd(new ProgressRpmFragment(),"Pointer");
FirstAdapter.fragmentAdd(new DeluxeRpmFragment(),"Deluxe");

viewPager.setAdapter(FirstAdapter);

Log.d("speedViewFragemnt",String.valueOf(viewPager.getCurrentItem()));
tabLayout.setupWithViewPager(viewPager);

在片段中使用时需要getActivty。除此之外,在代码中,在片段内部使用view pager有什么不同,因此需要使用getChildFragmentManager而不是getActivity.getSupportFragmentManager尝试使用ViewPageAdapterRG FirstAdapter=new ViewPageAdapterRGThis.getChildFragmentManager;如果无法解析或引用getChildFragmentManager,则getChildFragmentManager甚至不需要其片段的上下文。因此,只需让ChildFragmentManager工作就可以了!!
public class ViewpageAdapterFrg extends FragmentPagerAdapter {
    public List<Fragment> fragmentList=new ArrayList<>();
    public List<String> fragmentTittle=new ArrayList<>();


    public ViewpageAdapterFrg(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentTittle.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentTittle.get(position);
    }

    public void fragmentAdd(Fragment fragment, String text){
       fragmentList.add(fragment);
       fragmentTittle.add(text);
    }
    @Override
    public int getItemPosition(Object object) {
        // POSITION_NONE makes it possible to reload the PagerAdapter
        return POSITION_NONE;
    }
}
public void apptabview(){
    tabLayout=(TabLayout)view.findViewById(R.id.tabs);
    viewPager=(ViewPager)view.findViewById(R.id.viewpage);

    ViewpageAdapterFrg FirstAdapter=new ViewpageAdapterFrg(getActivity().getSupportFragmentManager());

    FirstAdapter.fragmentAdd(new NormalRpmFragment(),"Normal");
    FirstAdapter.fragmentAdd(new AwesomeRpmFragment(),"Awesome");
    FirstAdapter.fragmentAdd(new PointerRpmFragment(),"Pointer");
    FirstAdapter.fragmentAdd(new ProgressRpmFragment(),"Pointer");
    FirstAdapter.fragmentAdd(new DeluxeRpmFragment(),"Deluxe");

    viewPager.setAdapter(FirstAdapter);

    Log.d("speedViewFragemnt",String.valueOf(viewPager.getCurrentItem()));
    tabLayout.setupWithViewPager(viewPager);
}
 getChildFragmentManager()
 getSupportFragmentManager()
ViewpageAdapterFrg FirstAdapter=new ViewpageAdapterFrg(getChildFragmentManager());

FirstAdapter.fragmentAdd(new NormalRpmFragment(),"Normal");
FirstAdapter.fragmentAdd(new AwesomeRpmFragment(),"Awesome");
FirstAdapter.fragmentAdd(new PointerRpmFragment(),"Pointer");
FirstAdapter.fragmentAdd(new ProgressRpmFragment(),"Pointer");
FirstAdapter.fragmentAdd(new DeluxeRpmFragment(),"Deluxe");

viewPager.setAdapter(FirstAdapter);

Log.d("speedViewFragemnt",String.valueOf(viewPager.getCurrentItem()));
tabLayout.setupWithViewPager(viewPager);