Android Material 步进器在导航回视图后显示空视图

Android Material Stepper Showing Empty View After Navigating Back To The View

我正在使用 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();
    }
    

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

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

这是我第二次重新导航到片段

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

只要您的片段完全包含在另一个片段中(例如您的 mStepperLayout 是您的 NewComplainFragment 的一部分),您需要使用 childFragmentManager 而不是 Activity 的 FragmentManager:

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