【发布时间】:2015-11-26 04:21:12
【问题描述】:
StackOverflow 上有几个问题,但没有一个包含 DialogFragment。通常的解决方案是使用commitAllowingStateLoss() 而不是commit()。但是对于DialogFragment,我该如何实现呢?
以下是DialogFragment的show()方法的代码。上面有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);
}
}
【问题讨论】: