最近遇到这样的一个问题,在tabhost中弹出对话框或者弹出一个下拉菜单,总是会报一个
“android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@435def20 is not valid; is your activity running? ”
这样的异常,后来经过研究查资料发现,原来当一个activity(A)依附于另一个activity(B)时,弹出对话框就会报错,原因在于activity B 有可能会被系统回收,这样就不能保证程序的正常运行。所以在A中创建Dialog时,传递的上下文对象不能是当前的activity而应该是依附的那个activity对象(该对象可以通过getParent方法得到)
“android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@435def20 is not valid; is your activity running? ”
这样的异常,后来经过研究查资料发现,原来当一个activity(A)依附于另一个activity(B)时,弹出对话框就会报错,原因在于activity B 有可能会被系统回收,这样就不能保证程序的正常运行。所以在A中创建Dialog时,传递的上下文对象不能是当前的activity而应该是依附的那个activity对象(该对象可以通过getParent方法得到)
本文探讨了在TabHost中弹出对话框导致的“BadTokenException”异常问题。当一个Activity(A)依附于另一个Activity(B)时,若ActivityB被回收,会导致弹出对话框时出现异常。文章提供了解决方案:在A中创建Dialog时,应使用依附的Activity对象(通过getParent方法获取)作为上下文。
1758

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



