gpt4 book ai didi

android - 从 onCreateDialog 创建的 ProgressDialog 在第二次运行时停止动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:29 24 4
gpt4 key购买 nike

我在 onCreateDialog() 中创建了一个 ProgressDialog,如下所示:

protected Dialog onCreateDialog(int id) {
if (id == DIALOG_PROGRESS_ID)
{
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage(getResources().getString(R.string.MyLabel));
dialog.setCancelable(false);
dialog.setIndeterminate(true);
return dialog;
}
}

Android 以其智慧(或严重缺乏智慧)决定缓存通过 onCreateDialog() 创建的每个对话框。因此,对 showDialog(DIALOG_PROGRESS_ID) 的任何后续调用都会导致使用相同的 ProgressDialog 实例,但动画已停止工作。

我尝试在 onPrepareDialog() 中重新设置不确定,但这没有任何作用。同样没有明显的方法来调用将重置动画的对话框实例。

protected void onPrepareDialog(int id, Dialog dialog)
{
//This doesn't do anything
if (id == DIALOG_PROGRESS_ID)
((ProgressDialog)dialog).setIndeterminate(true);
super.onPrepareDialog(id, dialog);
}

编辑:但也许有一种方法可以让 ProgressBar 本身开始动画化?所以我在问了这个问题后尝试了以下方法:

@Override
protected void onPrepareDialog(int id, Dialog dialog)
{
if (id == DIALOG_PROGRESS_ID)
{
ProgressBar p = (ProgressBar) dialog.findViewById(android.R.id.progress);
if (p.getAnimation() != null)
p.startAnimation(p.getAnimation());
}
super.onPrepareDialog(id, dialog);

但它也没有用!

那么,有谁知道是否有办法在 ProgressDialog 上重新启动动画? 如果没有,有没有办法可以强制每次 showDialog() 调用都调用 onCreateDialog()? (@TuomasR 回答了第二个问题,但经过深思熟虑,我认为这不是很好地解决了我的问题)

最佳答案

哈!明白了。。。也在纠结这个问题。但是调用:

removeDialog(DIALOG_PROGRESS_ID)

紧接着

dismissDialog(...)

将其从 Activity 的(假定的)对话框缓存中删除并强制调用 onCreateDialog。在 onCreateDialog 中创建一个新的 ProgressDialog,微调器每次都会动画(至少对我而言)。

关于android - 从 onCreateDialog 创建的 ProgressDialog 在第二次运行时停止动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com