现象:
报错android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
代码:
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Context context = getApplicationContext();
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("自定义对话框");
TextView textview = (TextView) dialog.findViewById(R.id.text);
textview.setText("Hello this is a custom dialog");
ImageView imageview = (ImageView) dialog.findViewById(R.id.image);
imageview.setImageResource(R.drawable.ic_launcher);
dialog.show();
}
});分析:
new Dialog(Context),这里虽然是要Conntext类型,但是不能使用getApplicationContext()获得的Context,而必须使用Activity.this获得的Context对象,
因为只有一个Activity才能添加一个窗体
代码:
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("自定义对话框");
TextView textview = (TextView) dialog.findViewById(R.id.text);
textview.setText("Hello this is a custom dialog");
ImageView imageview = (ImageView) dialog.findViewById(R.id.image);
imageview.setImageResource(R.drawable.ic_launcher);
dialog.show();
}
});
本文分析了在Android应用中创建自定义对话框时遇到的BadTokenException错误,并提供了解决方案。通过对比不同Context获取方式,指出应使用Activity.this作为Dialog构造函数的参数。
1758

被折叠的 条评论
为什么被折叠?



