当我按下取消按钮时,会出现取消的Toast和解雇的Toast。我怎么解决这个问题?感谢。
编辑:按下取消按钮时我需要一个Toast,当ProgressDialog正确完成时(当我解除它时)我需要另一个不同的Toast。但是现在,当ProgressDialog正确完成时,我有正确的Toast,但是当我按下取消按钮时,结果都是Toast。 (这是一个ProgressDialog,其中一个栏增加了5来完成)。对于我的英语:SmyPd_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();
答案 0 :(得分:2)
public void cancel()
取消对话框。这与调用dismiss()基本相同,但它也会调用DialogInterface.OnCancelListener(如果已注册)。
如果您不想同时展示,请使用dismiss()
。取消时,首先取消,然后取消对话框。这会导致两个听众都开火。除非你想覆盖cancel()
本身并实现自己的方法,否则真的没办法解决它。但是,我看不出有这么好的理由。
另外,我是第二个Egor的评论。如果您真的需要“为了练习”,请准确解释您正在尝试做什么。
修改:从下面的评论中,我建议您根本不使用听众。如果你需要做的就是放弃/取消,那就直接创建祝酒词。
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();
}
答案 1 :(得分:0)
致电
之前myPd_bar.show();
这样做,
myPd_bar.setCancelable(true);
更多信息: http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean)