【问题标题】:Problem using ProgressDialog with onCreateDialog / onPrepareDialog将 ProgressDialog 与 onCreateDialog / onPrepareDialog 一起使用时出现问题
【发布时间】:2010-02-03 21:13:51
【问题描述】:

我正在使用以下代码创建一个ProgressDialog(在我的Activity 内):

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case DIALOG_LOOKUP:
            return new ProgressDialog(this, ProgressDialog.STYLE_SPINNER);
    }
    return null;
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    switch (id) {
        case DIALOG_LOOKUP:
            dialog.setCancelable(true);
            dialog.setTitle(R.string.dialogLookup_title);
            ((ProgressDialog)dialog).setMessage(getResources().getString(R.string.dialogLookup_message));
            dialog.setOnCancelListener(new OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {
                    Toast.makeText(MyActivity.this, "canceled", Toast.LENGTH_SHORT).show();
                }
            });
            break;
    }
}

问题是它实际上并没有设置标题,而是把它放在了一些奇怪的双框中。

它给了我这个:

但我期待更像这样的东西:

有什么想法吗?

【问题讨论】:

标签: android progressdialog


【解决方案1】:

我刚刚尝试了您的示例,它似乎从 ProgressDialog.STYLE_SPINNER 更改为 ProgressDialog.STYLE_HORIZONTAL 解决了奇怪的双框问题。

它还显示标题和文本。

编辑:

您在ProgressDialog 构造函数中传递ProgressDialog.STYLE_SPINNER

从文档中,第二个参数是主题 ID。

您必须创建一个ProgressDialog 对象并使用setProgressStyleProgressDialog.STYLE_SPINNER

case DIALOG_LOOKUP:
     ProgressDialog pdlg = new ProgressDialog(this);
     pdlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
     return pdlg;

【讨论】:

  • D'oh...我怎么会错过呢?不过我还没有拿到头衔。
  • 好吧,出于某种原因,我不得不将我的setTitle() 移动到onCreateDialog(),但这似乎已经完成了。感谢您的帮助。
  • 那是很久以前的事了,但万一它对任何人都有帮助:我发现那个 dialog.setTitle(...) 只有在 onPrepareDialog() 中也设置了 onCreateDialog( )。 (在 4.1.2 上试过)
猜你喜欢
  • 2011-03-15
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2010-10-26
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多