代码之家  ›  专栏  ›  技术社区  ›  Tyler

Dialog.show()与Activity.showDialog()

  •  37
  • Tyler  · 技术社区  · 14 年前

    1. 创建对话框(例如,使用 AlertDialog.Builder ),然后调用新创建的对话框的 show()
    2. 呼叫活动的 showDialog() 方法,传入一个int,该int唯一地定义要生成的对话框类型。然后重写 onCreateDialog() 以实际构建对话框,Android将为您显示它。

    第二种方法似乎是标准的做法,但我很好奇,如果有什么原因,它的问题,我用哪一个。以下是我能想到的:

    Dialog.show

    1. 如果您需要以某种方式参数化对话框,使用起来可能会有点尴尬 Activity.showDialog ,如中所述 this question . 您可能需要在成员变量中存储一个字符串或其他内容,以便稍后在 onCreateDialog onPrepareDialog .
      • showDialog()
      • switch 重写中的语句 OnCreate对话框 方法
      • 转换 重写中的语句 onPrepareDialog公司 方法

    活动.showDialog :

    1. 活动.showDialog 假设对话框是由活动“管理”的,我认为它提供了一些好处?但如果你使用 ,我想,因为你过去了 this
    2. 如果您的活动要多次显示相同的(或非常相似的)对话框,则此选项只创建一次,而不是每次创建一个新的对话框,从而在为新对象分配空间、垃圾收集等方面减轻系统的负担。

    所以我的问题是,决定何时使用的标准是什么 什么时候用 对话框.show

    3 回复  |  直到 7 年前
        1
  •  18
  •   Dariusz Bacinski    14 年前

    showDialog 因为这个方法可以帮你完成大部分工作。在这个示例中,您不必担心更改屏幕方向后会丢失对对话框的引用。它将自动重新创建。 Dialog.show 更容易出错。

    所以我建议你用 到处都是。

        2
  •  2
  •   Cristian    14 年前

    Dialog.show 方法。。。另一方面,如果我的应用程序的UI过于依赖于对话框的使用,那么使用对话框会更好 showDialog() . 我认为使用 showDialog()

    final int ERROR_DIALOG = 404;
    final int MSG_DIALOG = 200;
    
    .....
    
    // if someone else read this, he/she will immediately understand what's going on
    showDialog( ERROR_DIALOG );
    
        3
  •  2
  •   Dheeraj Vepakomma    12 年前

    可以使用重载方法 showDialog(int, Bundle) 在API级别8中引入。
    只需将要显示的消息推到bundle中,bundle将在中提供 onPrepareDialog(int, Dialog, Bundle) .

    showDialog() 它本身现在已经被弃用了。