Error: WebView.destroy() called while still attached 的解决办法

Error: WebView.destroy() called while still attached 的解决办法  

2013-12-03 16:11:30|  分类: android之错误 |  标签: |字号 订阅

今天在改Webview页面的时候出现了闪退。看Log发现是这个问题Error: WebView.destroy() called while still attached。


谷歌了一下。发现只有stackoverflow解释这个问题比较清楚,另外鄙视下百度,啥都搜不到。不过一些问题能用中文描述的,还是百度相关内容比较多。


现在总结下这个问题的解决办法。先大概解释下这个错误,这个错误从字面意思来说是当你结束webview的时候,Webview还依附在父控件下,使用解决这个问题

就是在WebView.destroy()前要解除他们之间的依附关系。一般会碰上这个问题应该是这样对webview进行了操作:

protected void onDestroy()
{
    if (adView != null)
    {
        adView.destroy();
    }
}


附上一段详细的正确代码:

[java]  view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.         android:id="@+id/webviewRelativeLayout"  
  3.         android:layout_width="fill_parent"  
  4.         android:layout_height="fill_parent">  
  5.   
  6. <WebView  
  7.     android:id="@+id/webView1"  
  8.     android:layout_width="match_parent"  
  9.     android:layout_height="match_parent"  
  10.     android:layout_below="@+id/headerAlarmsWebViewTxt"  
  11.     android:layout_marginBottom="0dip"  
  12.     android:hapticFeedbackEnabled="true"  
  13.     android:overScrollMode="never"  
  14.     android:scrollbarAlwaysDrawVerticalTrack="false"  
  15.     android:scrollbars="none" />  
  16.   
  17.  </RelativeLayout>  
  18. Then you assign it to an instance variable e.g. :  
  19.   
  20. _layout = (RelativeLayout) findViewById(R.id.webviewRelativeLayout);  
  21. webView = (WebView) findViewById(R.id.webView1);  
  22. and on Destroy do something like this:  
  23.   
  24. @Override  
  25. protected void onDestroy() {  
  26.     super.onDestroy();  
  27.     _layout.removeView(webView);  
  28.     webView.removeAllViews();  
  29.     webView.destroy();  
  30. }  

你可能感兴趣的:(Error: WebView.destroy() called while still attached 的解决办法)