and*_*irl 55 android fragment android-context android-alertdialog
我想在我的应用程序中显示警告对话框.我正在使用片段.我尝试了以下代码来执行此操作:
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();
Run Code Online (Sandbox Code Playgroud)
但它崩溃了,logcat中的错误是:
04-18 15:23:01.770:E/AndroidRuntime(9424):android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序
从互联网上我开始知道崩溃是由于上下文问题.我给了上下文
context = this.getActivity().getApplicationContext();
Run Code Online (Sandbox Code Playgroud)
我不知道这有什么问题.有谁能够帮我?
Jav*_*ave 125
替换context为getActivity().
该ApplicationContext不应该用于任务,如创建对话框.当您在片段中时,您只需通过调用Fragments getActivity()方法即可获得Activity-Context .
JDC*_*der 14
有关此问题的更多信息(片段中的AlertDialog,在事件内部管理):
如果您在onClick(View v)或onLongClick(View v)等事件中调用AlertDialog,则可以使用
public boolean onClick(View v) {
...
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(v.getContext());
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86329 次 |
| 最近记录: |