如果我使用merge
標記爲我的片段佈局中的父標籤,我遇到兩個問題:你可以使用帶碎片的合併標籤嗎?
第一,在
onCreateView()
,如果我指定不附加到根,我得到的錯誤:android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
如果我去做附加到根,我得到的錯誤:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我在這裏發現了另一個問題的好答案,表示片段庫會自動將孩子附加到您在replace中指定的父視圖組。建議您需要將attachToRoot
設置爲false
。對於merge
標籤,這是必需的。
是否可以避開這些規則中的任何一個,以便將merge
標記用於片段佈局?
所以'android.view.InflateException:從開始佈局文件只能與一個有效的ViewGroup根和attachToRoot = TRUE;使用是因爲'attachToRoot = FALSE'(所述的ViewGroup根是有效的) ? –
@Mr_and_Mrs_D是的,因爲對於'false',膨脹後的佈局不會被添加到'ViewGroup'中,這正是'merge'標籤所要求的。另外,我認爲如果對'attachToRoot'使用'true',而對第二個參數使用'null'' ViewGroup'(意味着沒有父對象來連接膨脹佈局),則會拋出同樣的異常。 – Luksprog
謝謝 - 多煩人 - 兩種情況下的相同錯誤消息。關於'merge'和'fragments',你可能會發現[this](http://stackoverflow.com/a/15315289/281545) –