最近在Android上建立一個簡單的Fragment時出現了詭異的錯誤。我本來的意圖可能也不是很正規,在Activity的Layout xml檔案中,我放置好了一個fragment element,然後打算在Activity的onCreate()函數中利用Fragment Transaction來動态替換這個fragment。然後就報了一個exception,exception的描述是這樣的:
Scroll view may have only one direct child placed within it
在我想建立的fragment裡,的确是有個頂層scrollview,然而我非常确定的是我的scrollview絕對隻有一個direct child。經過了非常痛苦的google檢索,最後終于發現一點蛛絲馬迹,貌似靜态定義在layout xml檔案中的fragment是不能利用Fragment Transaction來進行replace的!參考
http://cleancodedevelopment-qualityseal.blogspot.jp/2013/10/dynamically-fragment-replacement-android.html
還有這裡
https://github.com/codepath/android_guides/wiki/Creating-and-Using-Fragments
于是我将原來定義在layout xml檔案中的fragment element去除,在Activity的onCreate()函數内,利用Fragment Transaction
的add()函數,動态添加了一個fragment,此時不再報上述錯誤了。fragment也成功添加到Activity中。
不專業,不專業啊。