Android - 无法通过应用内结算关闭AlertDialog

时间:2011-08-17 00:45:18

标签: android alertdialog in-app-billing

我在使用AlertDialog时遇到问题,我正在使用它来启动应用程序内购买。当用户点击“购买”按钮时,应用内购买会按预期触发,但AlertDialog不会关闭。然后,当应用程序内购买完成后,程序将返回到我的应用程序,但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();

1 个答案:

答案 0 :(得分:0)

我确信这个问题早已被弄清楚了,但可能的解决办法是将buyCard();移到dialog.dismiss();以上

所以,就像这样:

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

原因是,对话框无法运行buyCard();行,因为您已经解除了它。有点像在return语句后尝试运行代码。