如何在片段中显示警报对话框?

我想在我的应用中显示一个警报对话框。我正在使用片段。我尝试了下面的代码来执行此操作:

 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 不适用于应用程序

从互联网上,我知道崩溃是由于上下文问题。我给出了背景

context = this.getActivity().getApplicationContext();

我不知道这有什么问题。任何人都可以帮助我吗?


答案 1

替换为 。contextgetActivity()

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


答案 2

有关此问题的详细信息(片段中的 AlertDialog,在事件内部管理):

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

public boolean onClick(View v) {
    ...
    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(v.getContext());
    ...
}

推荐