我有一个对话框,每次显示时都会显示动态内容。因此,我使用了onPrepareDialog,在那里我使用dialog.findViewById()来查找视图(在这种情况下是一个图像)。
此代码完美无缺,直到您旋转设备。此时,将重新创建Activity(按预期方式),但下次尝试显示该对话框时,findViewById将返回null。
我的目标是API 7(2.1)。有没有人有任何想法为什么会这样?感谢。
- 编辑,因为我无法回答我自己的问题.. - 好吧,对于遇到这个问题的其他人来说,这是因为在轮换之后,似乎contentView在对话框中不再有效。当然,onCreateDialog会修复它,但它没有被调用..我发现解决这个问题的唯一方法是在显示对话框时设置一个标志,然后添加以下代码(或类似代码):
@Override
protected void onResume()
{
super.onResume();
// Destroy the dialog if it was showing during a rotation.
if (YourActivity.isDialogShowing)
{
removeDialog(DIALOG_ID);
YourActivity.isDialogShowing = false;
}
}
这会成功停止发生的null findViewById,因为onCreateDialog将在下次使用时被调用。我不明白为什么没有这方面的文件。请注意,dismissDialog()是不够的,必须将其删除。