这适用于 API 级别 10 及以下:
首先,您应该在 Activity 类中覆盖 onCreateDialog(int id, Bundle args) ,这是您在做什么吗?对话框始终作为 Activity 的一部分创建和显示。其次,我认为您不能取消/关闭 onCreateDialog 中的对话框,因为在调用 onCreateDialog 时它实际上并没有被创建。也就是说,您不能取消/关闭尚未创建的内容。您可以尝试改写 onPrepareDialog() 并检查以取消/关闭那里的对话框。此时实际上应该已经创建了对话框(只是没有显示),因此如果您在那里调用取消/关闭,您将能够阻止它显示。
onPrepareDialog() 是对即将显示的对话框进行任何类型的检查和决策的适当位置。这适用于 Honeycomb 之前的 API。
这适用于 API 11 及更高版本:
如果您使用的是更高版本的 API,则应改为扩展 DialogFragment。在这种情况下,我认为您可以在 DialogFragment 的 onCreateView() 方法中处理决策,该方法类似于 onPrepareDialog()。
我希望你已经阅读了这个:http:
//developer.android.com/guide/topics/ui/dialogs.html
或者这个,取决于你的 API:
http://developer.android.com/reference/android/app/DialogFragment.html
总的来说,也许一个更干净的解决方案是禁用导致对话框首先出现的按钮或机制?也就是说,编写代码使得 Dialog.show() 仅在真正需要调用时才被调用。我必须知道更多关于你到底想要做什么的细节。例如,假设您从按钮的 onClickListener 调用 Dialog.show()。您真的不希望用户按下按钮,期待一个对话框,但由于用户不理解的某种原因而没有显示它。更好的解决方案是一起禁用该按钮,这样用户就可以清楚地看到,由于应用程序中的其他原因,此功能不可用。