您好,我正在使用alertdialog..and,当用户单击ok时,它必须重新启动相同的活动(游戏),而当他单击no时,它必须转到主菜单。但是当我点击确定..2个活动同时运行,当我时钟no..and回来,here..the对话框仍然存在!帮助!这是代码片段
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
alertbox.setMessage("oops! wrong answer! wanna play again?");
alertbox.setPositiveButton("Yea sure!",
new DialogInterface.OnClickListener() {
Intent game = new Intent("nik.trivia.GAME");
startActivity(game);
finish();
});
alertbox.setNegativeButton("Nope! take me to the main menu",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Intent menu = new Intent("nik.trivia.MENU");
startActivity(menu);
finish();
}
});
发布于 2011-09-02 20:45:11
在用户单击按钮后,您需要在AlertDialog
上调用dismiss()
。
编辑:只需放入这行代码:
arg0.dismiss();
在onClick
方法内部。
发布于 2011-09-02 20:44:27
为了只启动此活动的一个实例,您必须将标志设置为singleTask
,并在onNewIntent()
方法中获取意图。
编辑:
在清单文件中将singleTask设置为活动的标志,以避免同一活动有许多实例,并将以下内容添加到您的活动中:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
// Do here whatver you want. This method is similar to the onCreate() method.
}
发布于 2011-09-02 20:52:10
在您的示例中,您可以添加: alertbox.dismiss()
当您调用finish()时,它针对的是整个活动,而不仅仅是对话框
编辑:
public void onClick(DialogInterface arg0, int arg1) {
Intent menu = new Intent("nik.trivia.MENU");
startActivity(menu);
arg0.dismiss();
finish();
或者你可以直接声明alertbox是受保护的:
protected AlertDialog alertDialog
N你将能够从任何地方调用dismis
https://stackoverflow.com/questions/7283517
复制相似问题