在我的应用程序的活动中,我需要在上传内容时显示“正在加载”不可取消的 FragmentDialog。我从当前活动中的回调中显示此对话框,如下所示:
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
final Fragment prev = fm.findFragmentByTag( "loading" );
if ( prev != null ) {
ft.remove(prev);
}
ft.addToBackStack(null);
final DialogFragment df =
IndeterminateProgressDialogFragment.newInstance(
getString( R.string.loading_dialog_sending_data ) );
df.setCancelable( false );
df.show( ft, "loading" );
上传发生在从我的 ui 片段执行的保留片段中(使用 asynctask)。上传完成后,我的 ui Fragment 会在 onActivityResult 上收到通知,当前它会尝试关闭对话框。在过去,它通过在 onActivityResult 上完成的回调来委托解除加载对话框的责任,但它也不起作用。
当我的活动在前台时,我可以关闭此对话框,但在后台时,我得到一个 IllegalStateException:在 onSaveInstaneState 之后无法执行此操作。我尝试使用 onRemove,这不会使我的应用程序崩溃,但也不会隐藏 DialogFragment。我已经在我的 ui Fragment 和我的活动上做了这两件事,但仍然有问题。
我一直在阅读文档,但找不到可以使用的方法。
DialogFragment 不应该像我需要的那样使用还是我应该怎么做?