2011-12-01 26 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() 
} 
相關問題