2011-08-17 26 views
0

我遇到AlertDialog问题,我正在使用它来启动应用内购买。当用户点击“购买”按钮时,应用程序内购买按预期触发,但AlertDialog未关闭。然后,当应用程序内购买完成时,程序返回到我的应用程序,但AlertDialog仍然打开。Android - 无法使用应用内结算关闭AlertDialog

如果我注释掉buyCard()函数,AlertDialog将关闭。任何想法为什么AlertDialog在涉及应用内结算时没有关闭?

final CharSequence[] items = {"Buy","Close"}; 

AlertDialog.Builder builder = new AlertDialog.Builder(Card.this); 
builder.setTitle("Want to Buy?"); 
builder.setItems(items, new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface dialog, int item) { 
     if(item == 0) { // BUY THE ITEM 
      dialog.dismiss(); 
      buyCard(); 
     } else if (item == 1) { // Don't Buy 
      dialog.dismiss(); 
     } 
    } 
}); 

AlertDialog alert = builder.create(); 
alert.show(); 

回答

0

我敢肯定,这个问题早已想通了,但可能的解决办法是将移动buyCard();以上dialog.dismiss();

所以,像这样:

if(item == 0) { // BUY THE ITEM 
     buyCard(); 
     dialog.dismiss(); 
    } else if (item == 1) { // Don't Buy 
     dialog.dismiss(); 
    } 

原因是,由于您已将其解除,因此该对话框无法运行buyCard();行。有点像试图在return声明后运行代码。