我正在尝试通过扩展 AlertDialog
类来构建自定义 AlertDialog
。
像往常一样,我在其 onCreate()
方法中设置对话框。或者,我正在尝试这样做:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setTitle("Some title");
this.setButton(BUTTON_POSITIVE, "Click me", (DialogInterface.OnClickListener)null);
final FrameLayout custom = (FrameLayout) this
.findViewById(android.R.id.custom);
custom.addView(this.getLayoutInflater().inflate(R.layout.mydlg, null),
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}
现在,当涉及到显示此对话框的实例时,什么也没有显示。 当前 Activity
淡出并失去焦点,但我的对话框没有显示一个像素。按 Back 将 Activity
带回前台,向我表明对话框实际上显示,但只是一个完全空的一个。
但是,当我创建一个 AlertDialog
并使用例如 dlg.setButton(BUTTON_POSITIVE, "Click me", (DialogInterface.OnClickListener)null);
对话框显示有相应的按钮。
即使当我使用与上面完全相同的代码在其构造函数中设置我的自定义对话框时,一切似乎都工作正常。
现在,这怎么可能?为什么我似乎无法在其 onCreate()
方法中初始化我的对话框?这不是您应该初始化任何 GUI 元素的方式吗?我错过了什么?
编辑
请注意,“显示”了某物,使 Activity 淡出并从中获取焦点。只是它似乎完全是空的/看不见的。
这里是另一个尝试:
this.setTitle("Some title");
this.setButton(BUTTON_POSITIVE, "Click me", (DialogInterface.OnClickListener)null);
final View v = this.getLayoutInflater().inflate(R.layout.mydlg, null);
this.setView(v);
当放入我的对话框的构造函数中时,这些确切的行确实起作用。
当放入我的对话框的 onCreate()
中时,这些确切的行不起作用。
这是怎么回事?!
一般来说,我不应该在 onCreate()
中这样做吗? - 如果我改为在构造函数中进行上述初始化,我会遇到麻烦吗? (无论如何,这对我来说似乎不太干净。)
最佳答案
您需要调用 show()
方法才能看到一些东西。
关于java - 自定义 AlertDialog 无法在 onCreate() 中初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687651/