以前的帖子已经提到了这个问题,但是我尝试了很多,但似乎都没有。我有一个布尔标志,理论上应该阻止我的对话框被关闭。以下是我到目前为止的情况:
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。此时对话框立即被解除。有任何想法吗? 在此先感谢您的帮助!
答案 0 :(得分:1)
就我对进步对话的了解而言,它应该是正常行为。
由于ProgressDialog继承自AlertDialog - >对话框,默认情况下,当用户按下对话框上的按钮时,无论它是哪个按钮(正/负等),它们都会被解除。
建议:拦截触摸事件&检测触摸事件的源位置(即用户触摸了哪个按钮),我们应该能够覆盖此行为。