即使我在Android上调用onCreateDialog,也不会创建AlertDialog

即使我在Android上调用onCreateDialog,也不会创建AlertDialog,android,android-alertdialog,Android,Android Alertdialog,我面临以下问题 我有一个图像库,我想打开一个警报对话框,以显示有关单击图像的一些信息。我第一次点击图像时,它运行得很好。但是接下来的几次,即使我点击了一个不同的图像,同样的对话框再次出现 用户案例 当我关注这个用户案例时 在位置2选择一个图像 关闭对话框 在位置6选择一个图像 关闭对话框 ,我得到这些指纹: click na galeria... position: 2 startUserInformationDialog()... `this.position`: 2 onCreateDial

我面临以下问题

我有一个图像
,我想打开一个
警报对话框
,以显示有关单击图像的一些信息。我第一次点击图像时,它运行得很好。但是接下来的几次,即使我点击了一个不同的图像,同样的对话框再次出现

用户案例 当我关注这个用户案例时

  • 在位置2选择一个图像
  • 关闭对话框
  • 在位置6选择一个图像
  • 关闭对话框
  • ,我得到这些指纹:

    click na galeria... position: 2
    startUserInformationDialog()... `this.position`: 2
    onCreateDialog on switch.. `this.position`: 2
    DISMISSING DIALOG `this.position`: 2
    
    click na galeria... position: 6
    startUserInformationDialog()... `this.position`: 6
    DISMISSING DIALOG `this.position`: 6
    
    这意味着代码没有通过onCreate对话框运行

    代码
    使用
    onPrepareDialog()
    方法用数据填充对话框。如果要销毁对话框,应调用
    removeDialog()
    方法。

    我认为,如果ID相同,showDialog只调用onCreateDialog一次。如果要更新已创建的对话框,可以在显示给用户之前覆盖onPrepareDialog以更新任何您喜欢的内容。

    这是正常的,因为如果看到,onCreateDialog将在第一时间被调用

    第一次请求对话框时,Android会从您的活动中调用onCreateDialog(int),您应该在活动中实例化对话框。此回调方法的ID与您传递给showDialog(int)的ID相同。创建对话框后,在方法末尾返回对象

    您需要知道这将被创建一次

    在PrepareDialog上调用

    “在显示对话框之前,Android还会调用可选的回调方法onPrepareDialog(int,dialog)。如果您想在每次打开对话框时更改对话框的任何属性,请定义此方法。此方法在每次打开对话框时调用,而onCreateDialog(int)仅在第一次打开对话框时调用。如果未定义onPrepareDialog(),则对话框将与上次打开时保持不变。此方法还会传递对话框ID以及在onCreateDialog()中创建的对话框对象。“

    您可以尝试此方法。在你的活动中使用它非常简单

    如果您不需要复杂的功能,只需一行代码就足以创建对话框

    Pop.on(activity).with().title(R.string.title).body(R.string.body).show();
    
    只需在gradle依赖项中包含以下库

    dependencies {
        compile 'com.vistrav:pop:2.0'
    }
    

    我该怎么做?在我更改代码后,对话框显示为无内容。您可以从
    onPrepareDialog()
    方法调用对话框内的
    TextView
    。我想使用充气机设置AlertDialog的布局我正在这样做,然后更改值。。。但它不起作用<代码>AlertDialog AlertDialog=(AlertDialog)dialogIn;View dialoglayout=alertDialog.getLayoutInflater().充气(R.layout.dialog\u user\u info,(ViewGroup)findViewById(R.id.dialog\u user\u layout\u root));AlertDialog.Builder=新建AlertDialog.Builder(此);builder.setView(对话框布局)它看起来很奇怪,不起作用。不要创建其他生成器。只需调用
    alertDialog.setView(dialogLayout)
    。别忘了在这个布局中更改文本。我该怎么做?在我更改代码后,对话框将显示为没有内容。我该怎么做?在我更改代码后,对话框显示为无内容。
    dependencies {
        compile 'com.vistrav:pop:2.0'
    }