1

我在我的 android 应用程序中使用 BottomSheetDialogFragment。我正在使用 Java。我通过以下方式显示底页:

 ActionBottomDialogFragment dialogFragment = ActionBottomDialogFragment.newInstance();

        showButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialogFragment.show(getActivity().getSupportFragmentManager(), ActionBottomDialogFragment.TAG);
            }
        });

我看到的是它调用 onCreateDialog 方法,然后调用 onViewCreated 方法。第一次这样没问题。

现在我使用以下方法隐藏底部工作表:

ImageButton close = view.findViewById(R.id.closeButton);
        close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });

然后当我再次按下显示按钮时,它再次调用 onCreateDialog 方法。我有一个选择芯片的动态列表,我希望状态与我离开时一样。如果我把它留在检查“选择 A”上,它应该会在我下次打开底页时显示为选中状态。我需要维护状态。

正在发生的事情是它从一开始就重建了选择芯片,因此状态丢失了。

如何在不重新创建的情况下仅显示/隐藏底部工作表?

任何帮助将不胜感激。

谢谢!

4

1 回答 1

0

当您调用时,UI 总是会再次创建show()。最好使用sharedViewModelinbottomSheetFragment和父活动/片段。您应该保存在视图模型中选择的字段并将其用于底部表。这样状态将保持不变。

于 2020-12-10T07:10:15.767 回答