Подтвердить что ты не робот

Как установить диалог прогресса, который нельзя отменить при управлении в качестве фрагмента?

Я использую ProgressDialog как Fragment. Даже если я установил ProgressDialog для отмены, кнопка BACK по-прежнему будет работать для удаления этого Fragment из стека. Мой внутренний класс выглядит следующим образом:

public static class ProgressDialogFragment extends DialogFragment {

    private DialogStyle dialogStyle;

    public static ProgressDialogFragment newInstance(String title, String message) {
        ProgressDialogFragment fragment = new ProgressDialogFragment();
        Bundle args = new Bundle();
        args.putString("title", title);
        args.putString("message", message);
        fragment.setArguments(args);

        return fragment;
    }

    public void setDialogStyle(DialogStyle dialogStyle) {
        this.dialogStyle = dialogStyle;
    }


    @Override
    public ProgressDialog onCreateDialog(Bundle savedInstanceState) {
        String title = getArguments().getString("title");
        String message = getArguments().getString("message");

        ProgressDialog progressDialog = new ProgressDialog(getActivity());
        progressDialog.setTitle(title);
        progressDialog.setMessage(message);

        if(dialogStyle!=null) {
            switch (dialogStyle) {
                case CANCELABLE:
                    progressDialog.setCancelable(true);
                    break;
                case NON_CANCELABLE:
                    progressDialog.setCancelable(false);
                    break;

            }
        } else {
            progressDialog.setCancelable(false);
        }

        progressDialog.show();

        return progressDialog;
    }
}

И затем метод, который я выставляю, это:

public void showProgressDialog(String title, String message, DialogStyle dialogStyle) {
            Fragment prev = fragmentManager.findFragmentByTag("progress dialog");
            if(prev!=null) {
                ft.remove(prev);
            }
            ft.addToBackStack(null);

            DialogFragment newFragment = ProgressDialogFragment.newInstance(title, message);
            ((ProgressDialogFragment)newFragment).setDialogStyle(dialogStyle);
            newFragment.show(fragmentManager, "progress dialog");
        }

Таким образом, очевидная путаница заключается в том, что кнопка BACK удаляет ProgressDialog, поскольку она управляется как Fragment. Итак, как я могу сделать так, чтобы Dialog не был отменен?

Кажется странным попробовать что-то вроде:

@Override
    public void onBackPressed() {
        if(fragmentManager.fragmentManager.findFragmentByTag("progress dialog")!=null) {

        }
    }
4b9b3361

Ответ 1

Вместо ProgressDialog, почему бы вам не попробовать setCancelable(false) на DialogFragment?

Ответ 2

Вы также можете использовать setCancelable(false) на ProgressDialog