我有困難的時候與這個錯誤,因爲我的特殊情況,但最後還是找到了解決辦法。
我的情況:我使用單獨的視圖(XML),它包含WebView
,然後在我的主活動視圖中單擊一個按鈕時在AlertDialog
中打開。但不知何故WebView
屬於主要活動視圖(可能是因爲我從這裏拉的資源),所以就在我把它分配給我的AlertDialog
(作爲一個視圖)之前,我必須得到我的WebView
的父母,把它轉換爲ViewGroup
,然後刪除ViewGroup
上的所有視圖。這工作,我的錯誤消失了。
// set up Alert Dialog box
AlertDialog.Builder alert = new AlertDialog.Builder(this);
// inflate other xml where WebView is
LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
View v = layoutInflater.inflate(R.layout.your_webview_layout, null);
final WebView webView = (WebView) v.findViewById(R.id.your_webview_id);
// more code...
....我裝後來經過我的WebView
....
// first, remove the parent of WebView from it's old parent so can be assigned a new one.
ViewGroup vg = (ViewGroup) webView.getParent();
vg.removeAllViews();
// put WebView in Dialog box
alert.setView(webView);
alert.show();
我得到一個錯誤:02-25 22:21:19.324:錯誤/ AndroidRuntime(865):引起:java.lang.IllegalStateException:指定的子項已經有父項,必須調用子項的removeView父親第一 – 2010-02-25 21:24:45
@MichalDymel:你可能正在膨脹相同的xml agian。應該膨脹另一個。 – 2011-11-04 10:35:08
現在就試試這個,我需要:View child = getLayoutInflater()。inflate(R.layout.child,null); – James 2012-05-24 00:23:34