2013-05-22 31 views
4

我目前正在使用2個庫在我的Android項目:SlidingMenu和Android的PullToRefresh庫衝突

藉助Android 4.x中的一切工作正確,但在Android 2.x中,我得到一個StackOverflow異常。

我不確定它是Android版本問題還是硬件問題。

這是異常的日誌:

05-22 13:34:30.339: E/AndroidRuntime(15179): java.lang.StackOverflowError 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.text.Styled.measureText(Styled.java:430) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.text.Layout.measureText(Layout.java:1655) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.text.Layout.getLineMax(Layout.java:689) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.text.Layout.draw(Layout.java:340) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.text.BoringLayout.draw(BoringLayout.java:365) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.TextView.onDraw(TextView.java:4259) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6880) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.FrameLayout.draw(FrameLayout.java:357) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.AbsListView.dispatchDraw(AbsListView.java:1492) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.ListView.dispatchDraw(ListView.java:3138) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6986) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.AbsListView.draw(AbsListView.java:2600) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at com.handmark.pulltorefresh.library.PullToRefreshListView$InternalListView.draw(PullToRefreshListView.java:281) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.buildDrawingCache(View.java:6642) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1259) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1505) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.support.v4.view.ViewPager.draw(ViewPager.java:1574) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.FrameLayout.draw(FrameLayout.java:357) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.FrameLayout.draw(FrameLayout.java:357) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at com.slidingmenu.lib.CustomViewAbove.dispatchDraw(CustomViewAbove.java:830) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.view.View.draw(View.java:6883) 
05-22 13:34:30.339: E/AndroidRuntime(15179): at android.widget.FrameLayout.draw(FrameLayout.java:357) 

有人可以幫我解決這個問題?

謝謝!

回答

3

當你有太多的嵌套視圖時,你通常會看到這個錯誤 - 這是一個在老版本的Android上加劇的問題。

但是,我也注意到slidingmenu lib可以導致這個舊版本的android(3.X或更早版本)。我以前總是看到這個錯誤,它來自滑動菜單代碼 - 我自己的觀點只能嵌套10-15深(不是很好,但不是災難性的)。我切換到菜單抽屜庫https://github.com/SimonVT/android-menudrawer,錯誤消失。

事情嘗試...

  1. 火了Android設備監視器或層次觀衆(http://developer.android.com/tools/debugging/debugging-ui.html)和看看你的佈局。如果有任何觀點比說,15-20你可能想看看優化你的佈局。
  2. 嘗試換掉你自己的滑動菜單庫(在支持庫中)或者我上面提到的那個(這可能更容易交換,因爲它跟隨類似的設計滑動菜單 - 我花了大約一個小時) 。

祝你好運!

+0

謝謝@尼爾。 我用層次結構查看器和我刪除了兩個或三個層次結構層次,什麼解決了這個問題(例如我改變了一個RelativeLayout嵌套LinearLayout)。 無論如何,兩個圖書館都在層次結構中增加「額外」層次,所以這是一個需要考慮的問題。 – abeljus

+0

謝謝你的提示!我有完全相同的問題,我重塑我的意見,刪除一個或兩個LinearLayout和工作!主要問題是LinearLayouts,再次感謝你,拯救我的一天 –