首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在AlertDialog.finish()中设置AlertDialog?

如何在AlertDialog.finish()中设置AlertDialog?
EN

Stack Overflow用户
提问于 2016-05-07 04:51:09
回答 2查看 4.7K关注 0票数 2

我目前正在使用一个应用程序,需要利用大量的AlertDialogs。我目前已经在这里编写了一个基本的代码:

代码语言:javascript
运行
复制
protected void StopButton () {
    AlertDialog.Builder StopDialog = new AlertDialog.Builder(MainActivity.this);
    StopDialog.setTitle(R.string.Stop_Title);
    StopDialog.setMessage(R.string.Stop_Message);
    StopDialog.setPositiveButton(R.string.Yes_Button, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            ((Protoype2) getApplication()).setRequestingLocationUpdates(false);
            finish();
        }
    });
    StopDialog.setNegativeButton(R.string.No_Button, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ((Protoype2) getApplication()).setRequestingLocationUpdates(true);
        }
    });
    StopDialog.setNeutralButton(R.string.Negative_Button, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //Closes box
            finish();
        }
    });
    AlertDialog alert = StopDialog.create();
    alert.show();
}

StopButton起作用,当我要求它时,对话框就出现了。但是,finish();函数不能工作。

经过回顾,我发现finish();没有完成对话框,而是完成了整个应用程序。我知道我需要一个AlertDialog.cancel。

问题是:如您所见,AlertDialog只在StopDialog完成后才创建。

如何在完成AlertDialog.finish()之前设置StopDialog ()?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-07 05:01:36

用这样的finish()替换dialog.dismiss()

代码语言:javascript
运行
复制
AlertDialog.Builder StopDialog = new AlertDialog.Builder(TestActivity.this);
        StopDialog.setTitle("Title");
        StopDialog.setMessage("Stop");
        StopDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                ((Protoype2) getApplication()).setRequestingLocationUpdates(false);
                dialog.dismiss();
            }
        });
        StopDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                ((Protoype2) getApplication()).setRequestingLocationUpdates(true);
            }
        });
        StopDialog.setNeutralButton("Neutral", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Closes box
                dialog.dismiss();
            }
        });
        AlertDialog alert = StopDialog.create();
        alert.show();
票数 5
EN

Stack Overflow用户

发布于 2016-05-07 04:58:50

没有这样的方法finish()用于AlertDialogfinish()引用Activity类并将完成当前的Activity。您应该使用dismiss()

您可以使用DialogInterface对象(如dialog.dismiss() )来取消AlertDialog

您可以查看文档以获得更广泛的想法:)

http://developer.android.com/guide/topics/ui/dialogs.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37084621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档