java - 防止 ProgressDialog 被关闭 onClick 事件

标签 java android dialog progressdialog

这在以前的帖子中已经被问到,但我已经尝试了很多,但似乎都没有用。我有一个 boolean 标志,理论上应该可以防止关闭我的对话框。这是我目前所拥有的:

boolean start_match = false;    
public void WarmupDialog()
{
    if(use_warmup == true)
    {
        final ProgressDialog spinner = new ProgressDialog(this);
        spinner.setTitle("Warmup");
        spinner.setCancelable(false);
        spinner.setCanceledOnTouchOutside(false);
        timer = new CountDownTimer(300000, 1000)//5 minutes
        {
            @Override
            public void onFinish() 
            {
                spinner.cancel();
            }

            @Override
            public void onTick(long l) 
            {
                spinner.setMessage(((int)Math.round(l/1000.0)-1)+"secs remaining of warmup");
            }
        };
        spinner.setButton(DialogInterface.BUTTON_POSITIVE, "Start Warmup", (DialogInterface.OnClickListener)null) ;
        spinner.show();

        Button button = spinner.getButton(DialogInterface.BUTTON_NEUTRAL);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) 
            {
                if(start_match)
                {
                    spinner.dismiss();
                }
                else
                {
                    start_match = true;
                    Button button = spinner.getButton(DialogInterface.BUTTON_POSITIVE);
                    button.setText("Start Match");
                    timer.start();
                }
            }
        });

        spinner.setOnCancelListener(new DialogInterface.OnCancelListener() 
        {   
            @Override
            public void onCancel(DialogInterface dialog) 
            {
                timer.cancel();
                ChooseServer();
            }
        });

    }
    else
    {
        ChooseServer();
    }
}

这会打开网球比赛的热身计时器。当第一次按下按钮时,计时器应该启动。当再次按下按钮时,dailog 应该会取消。此刻对话框立即被关闭。有任何想法吗? 在此先感谢您的帮助!

最佳答案

就我对进度对话框的了解而言,这应该是正常行为。

由于 ProgressDialog 继承自 AlertDialog -> Dialog,默认情况下,当用户按下对话框上的按钮时,无论是哪个按钮(正/负等),它们都会被关闭。

建议:拦截触摸事件并检测触摸事件的源位置(即用户触摸了哪个按钮),我们应该能够覆盖此行为。

关于java - 防止 ProgressDialog 被关闭 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218705/

相关文章:

css - Gtk 检查员找不到小部件的一部分

javascript - 重用代码来淡入淡出元素,这样我就不必重复我的代码

Android:我应该启动一个新 Activity 还是显示一个对话框?

java - Spring Integration 流程失去订阅者

java - TomEE Intellij 理念 : Remote deploy

android - 为 android 商店签署 kivy 应用程序时出错

Android - 应用内购买问题

Java左移并用零填充

java - Guava 谓词无法过滤集合

android - Android 上的 Ti.UI.WebView : webpage is not being displayed