在DialogFragment上的onSaveInstanceState之后无法执行此操作

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

StackOverflow上有几个问题,但不包含DialogFragment。通常的解决方案是使用commitAllowingStateLoss()而不是commit()。但是我如何为DialogFragment实现这一目标?

以下是show()DialogFragment方法的代码。有ft.commit(),但我不能改为commitAllowingStateLoss()

public void show(FragmentManager manager, String tag) {
    mDismissed = false;
    mShownByMe = true;
    FragmentTransaction ft = manager.beginTransaction();
    ft.add(this, tag);
    ft.commit();
}

这是我如何实现DialogFragment

public class ProgressFragment extends DialogFragment {
    private String message;

    public static ProgressFragment getInstance() {
        return new ProgressFragment();
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        ProgressDialog progressDialog = new ProgressDialog(getActivity());
        progressDialog.setCanceledOnTouchOutside(false);
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate(true);
        progressDialog.setMessage(message);

        return progressDialog;
    }

    public void show(String message, FragmentManager manager, String tag) {
        this.message = message;
        show(manager, tag);
    }
}
android progressdialog
1个回答
0
投票

On showing dialog i get "Can not perform this action after onSaveInstanceState"

public class ProgressFragment extends DialogFragment {

    @Override
    public void show(FragmentManager manager, String tag) {
        try {
            FragmentTransaction ft = manager.beginTransaction();
            ft.add(this, tag);
            ft.commit();
        } catch (IllegalStateException e) {
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.