2015-04-04 33 views
0

考虑以下AlertDialog:的Android AlertDialog onDismiss让用户选择

pizzaOrderDialog = new AlertDialog.Builder(mContext); 
    pizzaOrderDialog.setTitle("One last thing:"); 
    pizzaOrderDialog.setMessage("Would you like black or green olives?") 
      .setCancelable(true) 
      .setPositiveButton("Black", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        orderPizza("black"); 
        Toast.makeText(mContext, "Ok! Thanks!", Toast.LENGTH_LONG).show(); 
       } 
      }) 
      .setNegativeButton("Green", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        orderPizza("green"); 
        Toast.makeText(mContext, "Ok! Thanks!", Toast.LENGTH_LONG).show(); 
       } 
      }); 
    alertD = pizzaOrderDialog.create(); 

这有可能是用户还选择通过任何位置触摸屏幕上,而不是点击“黑色”或“绿色”关闭对话框。我想要“捕捉”这种情况,并在onDismiss中获得这种情况的指示:

alertD.setOnDismissListener(new DialogInterface.OnDismissListener() { 

     @Override 
     public void onDismiss(DialogInterface dialogInterface) { 
      //TODO tell if dialog result was dialogInterface.BUTTON_NEGATIVE 
      // or maybe dialogInterface.BUTTON_POSITIVE ? 
     } 
    }); 

这里的最佳实践是什么?谢谢!

+1

为什么不使用'setOnCancelListener()'? – CommonsWare 2015-04-04 20:44:06

+0

谢谢。基本的东西。我应该删除这个问题吗? – user1555863 2015-04-04 20:51:36

+0

我不确定使用'setOnCancelListener()'是否会出现错误。在这里回答你自己的问题似乎很好。 – CommonsWare 2015-04-04 20:53:16

回答

1

显然,正如@CommonsWare所指出的,我需要在这里使用setOnCancelListener