Fixing BadTokenException in Android WebView
By admin
So you have successfully created a webView in your App and already loaded your URL into it.
<pre class="lang:java decode:true ">
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl(url);
However, any interaction with the page (such as a dropdown menu) will result in BadTokenException crash with the following error message;
FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window — token is not valid; is your activity running?
This happens when app wants to open a new dialog (e.g. for dropdown menu aka. spinner) while the container activity no longer exists.
Solution:
Create your WebView using the Activity Context rather than application context. Or if this is a child activity use parent activity context instead.
<pre class="lang:java decode:true ">
FrameLayout webViewContainer = (FrameLayout) findViewById(R.id.webViewContainer);
webView = new WebView(getParent());
webViewContainer.addView(webview);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(url);