问题描述
我正在使用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
,而不要活动的FragmentManager:
stepperAdapter = new StepperAdapter(getChildFragmentManager(),stepArrayList);