android Dialog的创建

一般来说dialog有两种方式创建:
第一种方式:通过onCreateDialog方式进行创建:
这种方法创建的dialog是在和主线程并行的线程中创建的,所以你可以在activity一创建的时候就去请求服务器数据,然后通过这个dialog的显示和隐藏加载数据。
与之对应的方式还有 onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int),removeDialog(int id)。通过onCreateDialog方法创建的dialog,可以通过showDialog来显示,通过removeDialog/dismissDialog来消除。两者的区别在于:dismissDialog:每次你的对话框消除的时候,这个对话框对象的状态将由该Activity保留;而removeDialog则删除任何内部对象引用而且如果这个对话框正在显示,它将被消除。



注:估计很多人和我一样,以前很少关注onPrepareDialog(int, Dialog)这个方法,这里介绍一下:在对话框被显示之前,系统还调用了可选的回调函数onPrepareDialog(int id, Dialog). 如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第一次打开时被调用。如果你不定义onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以对话框的ID,和在onCreateDialog()中创建的对话框对象。
第二种方式:通过新建一个dialog来创建:
如: Dialog tipDialog=null;
tipDialog = new AlertDialog.Builder(this)
.setTitle("")
.setMessage("").setCancel(true).create();
这种方式创建的dialog是在activity的主线程当中的。



这里我主要介绍的一个方法就是 :# tipDialog.setOwnerActivity(this) #内容;这个方法主要是将此创建的dialog一起绑定到此activity中。这个的作用就是如果你想在onCreateDialog方法之外再创建一个dialog时候,就可以用这个方法。今天我就是用这个方法解决了一个dialog一直显示的问题,特此花点时间记录一下。

你可能感兴趣的:(android Dialog的创建)