屏幕旋转后,onPrepareDialog中的dialog.findViewById返回null

时间:2011-04-20 18:33:47

标签: android

我有一个对话框,每次显示时都会显示动态内容。因此,我使用了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()是不够的,必须将其删除。

0 个答案:

没有答案