我想在我的应用程序中显示一个警告对话框。我使用的是片段。我尝试了下面的代码来做这件事:
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();
我不知道这有什么问题。有人能帮我吗?
发布于 2012-04-18 18:12:44
用getActivity()
替换context
。
ApplicationContext
不应用于创建对话框等任务。当您在片段中时,只需调用片段getActivity()
方法即可获得活动上下文。
发布于 2014-05-24 20:34:36
有关此问题的更多信息(片段中的AlertDialog,在事件内部进行管理):
如果在onClick(View v)或onLongClick(View v)等事件中调用AlertDialog,则可以使用
public boolean onClick(View v) {
...
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(v.getContext());
...
}
发布于 2012-04-18 18:12:26
尝试使用DialogFragment,当您使用片段时,DialogFragment更好
https://stackoverflow.com/questions/10207206
复制相似问题