2011-12-01 41 views
1

,我提到了一些计算器线程和发现,我们需要避免在创建弹出窗口,而不是我们需要使用getApplicationContext(),但是这是通过我搜索后引起BadTokenException的Android防止泄露虽然我的应用程序,我得到<strong><em>android.view.WindowLeaked</em></strong>异常运行猴工具窗口

E/AndroidRuntime(5597): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 

再次发现这个答案w^HICH说,这种错误的

一个原因可能是试图通过上下文不是一个活动

那么如何解决这个显示应用 窗口/对话框?

回答

3

由于您不使用showDialog方法中的Activity,而只使用Dialog.show()方法,因此通常会发生窗口泄漏。

当对话框显示并且您的Activity的配置更改(例如,方向更改)对话框没有附加窗口时,会导致窗口泄漏。

如果您使用Compatibility library您应该使用DialogFragment而不是纯粹的dialog

0

WindowManager$BadTokenException背后的原因是您现在在上下文不活动的窗口上继续显示dialogpopupwindow

因此,无论何时在活动之间切换或关闭任何活动,都应该始终关闭弹出窗口或对话框。

因此,您应该在onPause方法中调用dilog.dismiss()。

onPause() 
{ 
dilog.dismiss() 
} 
相关问题