2012-02-07 48 views
7

我剛去Android市場發佈更新到我的應用程序,並注意到從現有安裝報告了一些新的錯誤。雖然我能理解(並嘗試做一些事情),他們中的大多數這個讓我頗爲不解:ViewGroup.resetResolvedTextDirection中的Android StackOverflowError

java.lang.StackOverflowError 
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) 
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) 
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) 
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) 
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) 
at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5131) 
... this line repeats about 200 times or so ... 

這是所有有 - 任何形式的其他信息。

我完全不知道從哪裏開始調查。任何想法,不勝感激。

回答

1

我追蹤了這個問題。在我看來,就像Android中的一個bug,當視圖的visibility明確設置爲VISIBLE時展示,但視圖本身和視圖的父項未添加到主視圖。

我終於解決了這個問題,將有問題的ListView添加到XML中,而不是在代碼中創建它,並將代碼setVisibility(View.VISIBLE)移動到整個視圖添加到主視圖後(即父層次結構可以從每個孩子一直到開始)。

至少我沒有得到這個錯誤了。

10

這似乎是在ICS中添加的一種方法,因此它是4.0以上。看看the code它看起來像你在你的層次結構中有某種視圖循環,因爲它顯然是child.resetResolvedTextDirection();行這樣做。換句話說,您的佈局中的一個ViewGroup類不知何故被添加爲自己的孩子。

+0

我明白了。我相當肯定,一個觀點不能作爲一個孩子被直接或間接地添加到自身中,否則會產生各種各樣的問題。我會嘗試獲取ics模擬器並嘗試在那裏運行調試器 - 也許將能夠找到問題。 – 2012-02-07 17:38:38

+0

是的,有一個「父」檢查,你會_think_會避免這一點。但我無法以任何其他方式解釋遞歸循環。除非它不是遞歸的,你的視圖層次真的很深。 – 2012-02-07 18:03:39

1

問題是當您膨脹的視圖,使inflater.inflate(R.layout.view_topic, this); 和這個視圖的父母仍然不可見/呈現在舞臺上。

請務必使其後的父母是可見的,或致電

View child = inflater.inflate(R.layout.view_topic, null); // null will give warning but it wont throw an exception 
     this.addView(child);