导航回视图后,Android Material Stepper显示空视图

问题描述

我正在使用Android Material Stepper库,该库在片段中的首次初始化工作正常,但是当我返回到片段时,它显示的是空视图,我已经尝试了一切尝试释放步进器布局的方法,删除了所有视图以及其他所有内容可能但仍然是相同的反应

  private void initStepper2() {
        Toast.makeText(getActivity(),"initStepper",Toast.LENGTH_SHORT).show();

        mStepperLayout = mainView.findViewById(R.id.stepperLayout);
        mStepperLayout.setSaveEnabled(false);


        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                stepArrayList.clear();
                stepArrayList.add(new FirstStepFragment());

                stepArrayList.add(new ThirdStepFragment());


                stepperAdapter = new StepperAdapter(getActivity().getSupportFragmentManager(),getActivity(),stepArrayList);
                mStepperLayout.setAdapter(stepperAdapter);

                mStepperLayout.requestLayout();
                mStepperLayout.refreshDrawableState();
                stepperAdapter.notifyDataSetChanged();
            }
        },300);
    }

这是我初始化步进器的地方

 @Override
    public void onDetach() {
        Toast.makeText(getActivity(),"OnDetach",Toast.LENGTH_SHORT).show();
//        mStepperLayout.removeAllViews();
//        mStepperLayout.removeAllViewsInLayout();
//        mStepperLayout.refreshDrawableState();
//        mStepperLayout.requestLayout();
//        mStepperLayout.setAdapter(null);

        super.onDetach();
    }

    @Override
    public void onDestroyView() {
        Toast.makeText(getActivity(),"onDestroyView",Toast.LENGTH_SHORT).show();
//        mStepperLayout.removeAllViews();
//        mStepperLayout.removeAllViewsInLayout();
//        mStepperLayout.refreshDrawableState();
//        mStepperLayout.requestLayout();
//        mStepperLayout.setAdapter(null);
        super.onDestroyView();

    }

    @Override
    public void onPause() {
        Toast.makeText(getActivity(),"onPause",Toast.LENGTH_SHORT).show();
//        mStepperLayout.removeAllViews();
//        mStepperLayout.removeAllViewsInLayout();
//        mStepperLayout.refreshDrawableState();
//        mStepperLayout.requestLayout();
//        mStepperLayout.setAdapter(null);
        super.onPause();
    }
    

我已经尝试了所有这些方法,但仍然没有得到

enter image description here

这是初始化片段时我第一次得到的东西

enter image description here

这是我第二次重新浏览片段

 mainView.findViewById(R.id.L1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                navController = Navigation.findNavController(mainView);
                navController.navigate(R.id.action_newComplaintFragment_to_registerNCFragment);
            }
        });

这就是我通过导航地图使用android x导航控制器导航到片段的方式

解决方法

您在此处使用错误的FragmentManager

stepperAdapter = new StepperAdapter(getActivity().getSupportFragmentManager(),getActivity(),stepArrayList);

只要您的片段完全包含在另一个片段中(例如您的mStepperLayoutNewComplainFragment的一部分),就需要使用childFragmentManager,而不要活动的FragmentManager:

stepperAdapter = new StepperAdapter(getChildFragmentManager(),stepArrayList);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...