gpt4 book ai didi

android - 如何在不调用 Dismiss 的情况下取消 ProgressDialog?

转载 作者:太空狗 更新时间:2023-10-29 13:33:16 27 4
gpt4 key购买 nike

当我按下“取消”按钮时,出现取消的 Toast 和取消的 Toast。我该如何解决这个问题?谢谢。

编辑:按下取消按钮时我需要一个 Toast,当 ProgressDialog 正确完成时(当我关闭它时)我需要另一个不同的 Toast。但是现在,当 ProgressDialog 正确完成时,我有正确的 Toast,但是当我按下取消按钮时,结果都是 Toast。 (这是一个 ProgressDialog,带有一个按 5 递增即可完成的栏)。抱歉我的英语不好 :S

myPd_bar.setOnCancelListener(new OnCancelListener(){

public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"Cancelled.",
Toast.LENGTH_LONG).show();

}});

myPd_bar.setOnDismissListener(new OnDismissListener() {

public void onDismiss(DialogInterface arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Done.",
Toast.LENGTH_SHORT).show();
}
});
myPd_bar.setButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
myPd_bar.cancel();
}
});

myPd_bar.show();

EDIT2:最终解决方案:

private int sw = 0;

myPd_bar.setOnDismissListener(new OnDismissListener() {

public void onDismiss(DialogInterface arg0) {

if (sw==0){
Toast.makeText(getApplicationContext(), "Envio Realizado Correctamente.",
Toast.LENGTH_SHORT).show();
}
myPd_bar.dismiss();
sw=0;
}
});


//Botón Cancelar.
myPd_bar.setButton("Cancelar", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
sw = 1;
//Mostramos el mensaje al cancelar.
Toast.makeText(MainActivity.this,"Envío Cancelado.", Toast.LENGTH_LONG).show();
myPd_bar.cancel();
}
});

myPd_bar.show();

最佳答案

Documentation:

public void cancel ()

Cancel the dialog. This is essentially the same as calling dismiss(), but it will also call your DialogInterface.OnCancelListener (if registered).

如果您不想同时显示两者,只需使用dismiss()。当您取消时,它首先关闭,然后取消对话框。这会导致两个听众都开火。确实没有办法解决它,除非您想重写 cancel() 本身并实现您自己的方法。不过,我看不出这样做的充分理由。

此外,我赞成 Egor 的评论。如果您真的需要“练习”,请准确解释您想要做什么。

编辑:根据您在下方的评论,我建议您根本不要使用监听器。如果您在关闭/取消时需要做的只是显示 toast ,只需直接创建 toast 即可。

myPd_bar.setButton("Cancel", new DialogInterface.OnClickListener() 
{
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(MainActivity.this,"Cancelled.", Toast.LENGTH_LONG).show();
myPd_bar.cancel();
}
});

void dismissDialog(Context myContext)
{
Toast.makeText(myContext, "Done.", Toast.LENGTH_SHORT).show();
myPd_bar.dismiss();
}

关于android - 如何在不调用 Dismiss 的情况下取消 ProgressDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272339/

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