Android(安卓)Custom Dialog错误Unable to add window -- token null is not for an application
16lz
2022-03-08
转载自:http://hi.baidu.com/luoziding/blog/item/739388c97b73c1e153664f6b.html
按照Android手册上的自定义Dialog章节学习使用自定义Dialog是出现如下错误:
android.view.WindowManager$BadTokenException: Unableto add window--tokennullisnotforan application
手册上代码逻辑如下:
LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)findViewById(R.id.layout_root));TextView tv = (TextView)layout.findViewById(R.id.custom_text);tv.setText("Hello, this is a custom dialfo");ImageView iv = (ImageView)layout.findViewById(R.id.custom_image);iv.setImageResource(R.drawable.icon);builder = new AlertDialog.Builder(getApplicationCOntext());builder.setView(layout);dialog = builder.create();
将红色标记语句改为 builder = new AlertDialog.Builder(this);
错误原因:
You need to use your Activty as the Context for the Dialog not the Application.
Android is looking for a view to display the Dialog in and the Application does not have one but yourActivity will. The Application is an object which ties your app together and has a Context as it knows about which locale you're running in and so on, but it relies on Activities to display things to the user.
更多相关文章
- Android开发错误信息收集
- Mono for Android(安卓)设计器错误:Disconnected from layout ren
- Android(安卓)requires compiler compliance level 5.0 or 6.0.
- 【android】android 开发错误集锦4月
- Android(安卓)Bundle类
- 自定义圆形进度条ProgressBar的三种方式
- Android(安卓)判断Intent是否存在
- 在android上使用ASCII显示特殊符号
- android中常见的错误及解决办法