首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在片段中显示AlertDialog?

如何在片段中显示AlertDialog?
EN

Stack Overflow用户
提问于 2012-04-18 18:08:19
回答 9查看 103.4K关注 0票数 65

我想在我的应用程序中显示一个警告对话框。我使用的是片段。我尝试了下面的代码来做这件事:

代码语言:javascript
复制
 AlertDialog ad = new AlertDialog.Builder(context)
            .create();
    ad.setCancelable(false);
    ad.setTitle(title);
    ad.setMessage(message);
    ad.setButton(context.getString(R.string.ok_text), new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
ad.show();

但是它崩溃了,logcat中的错误是:

04-18 15:23:01.770: E/AndroidRuntime(9424):android.view.WindowManager$BadTokenException:无法添加窗口--内标识null不适用于应用程序

我从互联网上了解到,崩溃是由于上下文问题。我给出的上下文如下

代码语言:javascript
复制
context = this.getActivity().getApplicationContext();

我不知道这有什么问题。有人能帮我吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-04-18 18:12:44

getActivity()替换context

ApplicationContext不应用于创建对话框等任务。当您在片段中时,只需调用片段getActivity()方法即可获得活动上下文。

票数 136
EN

Stack Overflow用户

发布于 2014-05-24 20:34:36

有关此问题的更多信息(片段中的AlertDialog,在事件内部进行管理):

如果在onClick(View v)或onLongClick(View v)等事件中调用AlertDialog,则可以使用

代码语言:javascript
复制
public boolean onClick(View v) {
    ...
    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(v.getContext());
    ...
}
票数 16
EN

Stack Overflow用户

发布于 2012-04-18 18:12:26

尝试使用DialogFragment,当您使用片段时,DialogFragment更好

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

https://stackoverflow.com/questions/10207206

复制
相关文章

相似问题

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