我四处寻找解决方案,但似乎这不是一个常见问题。
当我的应用程序连接到服务器时,我希望有一个不确定的对话框微调器,然后清除该对话框并在请求完成时显示不同的对话框。我正在使用Fragment
兼容性包。问题是在显示第二个对话框之前没有移除微调器。
这是我显示对话框的代码,应该删除所有当前对话框:
void displayDialog(int type, String message) {
Log.i(logTag, "displayDialog: " + type);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
Log.i(logTag, "removing previous dialog");
ft.remove(prev); //TODO maybe use ((DialogFragment)dialog).dismiss(); ?
}
ft.addToBackStack(null);
// Create and show the dialog.
DialogFragment newFragment = DialogHelperFragment.newInstance(type, message);
newFragment.show(ft, "dialog");
}
这是我用来解决此错误的调用代码:
displayDialog(DialogHelperFragment.DIALOG_PROGRESS, null);
displayDialog(DialogHelperFragment.DIALOG_PURCHASE_SUCCESS, null);
这是我相应的 LogCat 输出:
06-25 13:53:35.497: I/tag(11008): displayDialog: 8
06-25 13:53:35.497: I/tag(11008): displayDialog: 7
06-25 13:53:35.897: I/tag Dialog Helper(11008): Creating Dialog: 8
06-25 13:53:35.907: I/tag Dialog Helper(11008): Creating Dialog: 7
问题是
Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
返回 null 因为在再次调用 displayDialog() 时尚未创建或附加第一个对话框。
任何提示都会非常有帮助。