安卓报错android.view.WindowManager$BadTokenException

在开发的过程中我们总是遇到各种各样的问题,今天我就在这里记录一下今天遇到的问题:

06-05 16:39:51.041 31991-31991/com.dde56.consignee E/AndroidRuntime: FATAL EXCEPTION: main Process: com.dde56.consignee, PID: 31991 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application at android.view.ViewRootImpl.setView(ViewRootImpl.java:677) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:282) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) at android.app.Dialog.show(Dialog.java:319) at android.widget.Spinner$DialogPopup.show(Spinner.java:1015) at android.widget.Spinner.performClick(Spinner.java:683) at android.view.View$PerformClick.run(View.java:19907) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:159) at android.app.ActivityThread.main(ActivityThread.java:5541) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:975) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

问题分析:出现上述问题的原因是我在代码里面写了一段这样的代码-- View contentView = LayoutInflater.from(LPApp.getInstance()).inflate(R.layout.goods_window, null); 顺便贴一下goods_window布局文件:?xml version="1.0" encoding="utf-8"?

      这个布局文件里面有个spinner控件,当我点击spinner的时候就报了上述错误(这个时候spinner自带的选择下拉图片是灰色的,点一下就崩溃)。

       解决方法是将View contentView = LayoutInflater.from(LPApp.getInstance()).inflate(R.layout.goods_window, null);这句代码里面的LPApp.getInstance()获得的ApplicationContext换成Activity对象就解决了,其实在开发的时候经常会遇到android.view.WindowManager$BadTokenException这样的异常,其实像AlertDialog,Dialog和Spinner这样的控件经常会遇到这样的问题,解决方法就是找到自定义dialog和spinner里面的Application类型的Context然后替换为Activity类型的Context对象,最后因为里面引用了Actvitiy的对象,最好在自定义的dialog或者spinner里面写一个destroyDialog的方法,在Activity走onDestroy的时候去调用这个destroyDialog方法释放掉activity对象,就是将传入到dialog或者spinner里面的context=null就可以了,说完了,搞得我好像有对象似得,还要把它释放掉,如果你也遇到了上面同样的异常,但是和我说的情况不一致,这个时候我就给你推荐一本书了《Android开发艺术探索》里面有个小结专门讲这种异常的,参考一下。

    哎!老婆又喊我洗碗去了,她只允许我吃牛5分钟,现在吹完了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,527评论 2 45
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,283评论 25 708
  • 今天是五四青年节,青年总是与意气风发、斗志昂扬的姿态相关,是国家的希望、企业的未来。为传承工匠精神,公司工会开展了...
    陈思奇阅读 504评论 0 2
  • 每一天,我们在有限的时间里,要协调好家庭、工作、生活,这真是一门需要智慧去领悟的艺术。我们被生活赶着往前跑,慌...
    淡之阅读 698评论 6 15
  • 一年一年又一年,今年又是戊戌年。一想到过完年后我就成了21岁,就要冲着30去了,不禁有一阵深深的恐惧感,过年也...
    娇尼阅读 212评论 0 0