Android(安卓)Custom Dialog错误Unable to add window -- token null is not for an application
按照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.
更多相关文章
- java.lang.ClassCastException:org.apache.harmony.luni.interna
- android WebView loadData不能解析(找不到网页)
- Android调试错误-No resource identifier found for attribute '
- 〖Android〗联想K860 logcat CM11.0出错信息及解决
- Android(安卓)requires compiler compliance level 5.0 or 6.0.
- Android(安卓)studio升级后ndk项目编译打包问题
- android 自定义viewR.styleable找不到或者是报错!
- fedora 18 源码编译 android 4.0.1
- (OK) 编译batman-adv.ko—成功—android—cm11源码—下载