关闭的DialogFragment在活动更改之间的某些时间段内可见

问题描述 投票:0回答:1

我有一个带有很多AppCompat活动的应用,其中有一些我正在使用此代码显示DialogFragment:

new PauseDialog().show(getSupportFragmentManager(), "dialog");

该对话框只是一个PAUSE对话框,带有退出和继续按钮。两者都在片段对话框上执行dismiss()。正确分配了它,但是有一个罕见的问题。当我打开一个新活动时,该对话框在活动更改中显示5-10ms。这是对话框的非常罕见的版本,没有正确的大小。非常非常罕见。这是一个损坏的版本。

这怎么可能,我该如何避免?我严重地给DialogFragment打电话了吗?

我的对话框:

public class PauseDialog extends DialogFragment {

    public interface PauseDialogListener {
        void onPauseDialogExitClicked();
        void onPauseDialogResumeClicked();
    }

    public PauseDialog() {
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.CustomDialogTheme); //must be calle before dialog creation.
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.dialog_pause, container);
        setCancelable(false);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        Button exit = view.findViewById(R.id.exitButton);
        Button resume = view.findViewById(R.id.resumeButton);

        exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((PauseDialogListener)getActivity()).onPauseDialogExitClicked();
                dismiss();
            }
        });

        resume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((PauseDialogListener)getActivity()).onPauseDialogResumeClicked();
                dismiss();
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        int sw = Util.getInstance().getScreenWidth(getActivity());
        int sh = Util.getInstance().getScreenHeight(getActivity());
        getDialog().getWindow().setLayout((int)(sw*0.5), (int)(sh*0.6));
    }
}
android android-fragments android-dialogfragment appcompatactivity
1个回答
0
投票

您的活动中有多少代码?onPauseDialogExitClicked();?尝试从onPauseDialogExitClicked();移动所有代码;一种新方法。我认为该活动的onPauseDialogExitClicked();中的代码在调用dismiss()之前得到处理...

© www.soinside.com 2019 - 2024. All rights reserved.