【问题标题】:ProgressDialog gets dismissed when button is pressed按下按钮时,ProgressDialog 被解除
【发布时间】:2013-07-10 08:10:24
【问题描述】:

我有一个“请稍候”ProgressDialog,其中包含一个按钮,问题是当单击该按钮时,对话框被 关闭(它消失了),我怎样才能使对话框 留在屏幕上?

    // Please wait dialog
private void showWaitDialog() {
    prgDialg = new ProgressDialog(context);
    prgDialg.setTitle("Working...");
    prgDialg.setMessage("Please wait.");
    prgDialg.setCancelable(false);
    prgDialg.setButton("Do something", myListener);
    prgDialg.show();
}

// Click listener
public OnClickListener myListener = new OnClickListener(){

    @Override
    public void onClick(DialogInterface dialog, int which) {
        textViev1.setText("xxx");
    }

【问题讨论】:

  • 为什么需要一个正在进行的对话框按钮?
  • 根据定义,如果您在对话框上使用内置按钮,它将关闭对话框。如果您想与 Dialog 进行更多交互,则需要向其中添加一个 View,其中包含您想要的按钮等。
  • @NareshR 例如,一个取消按钮。
  • @NareshR 不正确,您可以轻松地使用 ProgressDialogsetButton 来创建取消按钮。但是,您需要在呈现ProgressDialog 之后设置onClickListener

标签: android


【解决方案1】:

试试这个

prgDialg.setButton("Do something", new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int which) 
        {
            // Use either finish() or return() to either close the activity or just the dialog
            return;
        }
    });

【讨论】:

  • 不幸的是,无论您在onClickListener 中添加了什么内容,都无法使用此方法阻止ProgressDialog 关闭。您需要在显示ProgressDialog 后设置onClickListener
  • @JoshPinter,这实际上帮助了我。谢谢。
  • @Mann 你打赌。看看这个答案的例子:stackoverflow.com/a/24843394/293280
【解决方案2】:

prgDialg.setButton("做点什么", myListener); 不推荐使用上述方法 setButton(CharSequence text, DialogInterface.OnClickListener listener)。

你可以使用

private void showWaitDialog() {
    prgDialg = new ProgressDialog(this);
    prgDialg.setTitle("Working...");
    prgDialg.setMessage("Please wait.");
    prgDialg.setCancelable(false);
    prgDialg.setButton(DialogInterface.BUTTON_NEUTRAL, "Do something", this);
    prgDialg.show();
}

@Override
public void cancel() {

}

@Override
public void dismiss() {

}

【讨论】:

  • 当按钮被点击时,这仍然会关闭ProgressDialog
【解决方案3】:
private void showWaitDialog() {
    prgDialg = new ProgressDialog(context);
    prgDialg.setTitle("Working...");
    prgDialg.setMessage("Please wait.");
    prgDialg.setCancelable(false);
    prgDialg.setNeutralButton("Do Something", new View.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
                textViev1.setText("xxx");
    }
    });
    prgDialg.show();
}

【讨论】:

  • 我没有可用的setNeutralButton。你从哪里得到的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
相关资源
最近更新 更多