据我所知,有两种方法可以从 Activity 中显示 Dialog.
As far as I can tell, there are two ways to show a Dialog from an Activity.
AlertDialog.Builder),然后调用新创建的 Dialog 的 show() 方法.showDialog() 方法,传入一个 int,它唯一地定义了您想要构建的 Dialog 类型.然后重写 onCreateDialog() 以实际构建 Dialog,Android 将为您显示它.AlertDialog.Builder), and then call the newly created Dialog's show() method.showDialog() method, passing in an int that uniquely defines what sort of Dialog you want to build. Then override onCreateDialog() to actually build the Dialog, and Android will display it for you.第二种方法似乎是标准做法,但我很好奇我使用哪种方法是否重要.以下是我能想到的:
The second method seems to be the standard practice but I'm curious if there is any reason it matters which one I use. Here's all I can come up with:
使用Dialog.show
Activity.showDialog 可能会有点尴尬,如 这个问题.您可能必须在成员变量中存储字符串或其他内容,以便稍后在 onCreateDialog 或 onPrepareDialog 期间检索它.showDialog()onCreateDialog 方法中可能很大的 switch 语句中onPrepareDialog 方法中可能很大的 switch 语句中Activity.showDialog, as described in this question. You may have to store a String or something in a member variable, just so that it can be retrieved moments later during onCreateDialog or onPrepareDialog.showDialog()switch statement in the overridden onCreateDialog methodswitch statement in the overridden onPrepareDialog method使用Activity.showDialog的原因:
Activity.showDialog 的 API 文档说 Dialog 是由 Activity 管理"的,我想这会带来一些好处吗?但如果你使用 AlertDialog.Builder 也是如此,我认为,因为你将 this 作为参数传递给 Builder 的构造函数.Activity.showDialog say that the Dialog is "managed" by the Activity which I suppose provides some benefit? But this is also true if you use the AlertDialog.Builder, I would think, because you pass in this as an argument to the Builder's constructor. 所以我的问题是,决定何时使用Activity.showDialog和何时使用Dialog.show的标准是什么,为什么?
So my question is, what are the criteria for deciding when to use Activity.showDialog and when to use Dialog.show, and why?
在我看来你应该更喜欢 showDialog 因为这个方法会为你完成大部分工作.例如,您不必担心更改屏幕方向后会丢失对对话框的引用.它将自动重新创建.Dialog.show 更容易出错.
In my opinion you should prefer showDialog because this method will do most of the work for you. In example You don't have to worry that you will lose reference to your dialog after changing screen orientation. It will be recreated automatically. Dialog.show is much more prone to errors.
所以我建议你尽可能使用 showDialog.
So I suggest you to use showDialog everywhere you can.
这篇关于Dialog.show() 与 Activity.showDialog()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
使用 GPS 获取用户的当前位置Get user#39;s current location using GPS(使用 GPS 获取用户的当前位置)
requestLocationUpdate() 抛出的 IllegalArgumentExceptionIllegalArgumentException thrown by requestLocationUpdate()(requestLocationUpdate() 抛出的 IllegalArgumentException)
LocationManager 的 getLastKnownLocation 有多可靠,多久更How reliable is LocationManager#39;s getLastKnownLocation and how often is it updated?(LocationManager 的 getLastKnownLocation 有多可靠,多久更新
如何检测位置提供者?GPS 或网络提供商How to detect Location Provider ? GPS or Network Provider(如何检测位置提供者?GPS 或网络提供商)
在应用启动期间获取当前位置Get current location during app launch(在应用启动期间获取当前位置)
locationManager.getLastKnownLocation() 返回 nulllocationManager.getLastKnownLocation() return null(locationManager.getLastKnownLocation() 返回 null)