2016-09-27 60 views
13

我使用ondragListener進行視圖拖動。我的根目錄是viewgroup,其中更多viewgroup容器進入根目錄,並在容器內部添加了像imageview/textview這樣的視圖。stackoverflow錯誤查看拖放更新

如果我使用像linearlayout用於拖動的唯一容器(ViewGroup),並放棄其工作正常,但如果我開始添加視圖喜歡imageview這些容器內,還拖着點容器只能持這種觀點。

onActionDrop得到stackoverflow error : stack size 8MB

onActionDrop代碼:

if (e.getAction()==DragEvent.ACTION_DROP) { 
     final View view = (View) e.getLocalState(); 
     final ViewGroup from = (ViewGroup) view.getParent(); 
     from.removeView(view); 
     final LinearLayout toView = (LinearLayout) v; 
     toView.addView(view);} 

錯誤日誌:

java.lang.StackOverflowError: stack size 8MB 
    android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:6546) 
    android.os.TransactionTooLargeException: data parcel size 26840220 bytes 
android.os.BinderProxy.transactNative(Native Method) 
android.os.BinderProxy.transact(Binder.java:503) 
android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4425) 
com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:90) 
java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) 
java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) 
+0

這是一個完整的堆棧跟蹤? –

+1

你的代碼看起來不錯,但問題可能在於你從一個容器移動到另一個容器的視覺組件的數量,你可能需要銷燬並重新創建拖動的視圖或類似的東西。請參閱此其他問題http://stackoverflow.com/questions/11451393/what-to-do-on-transactiontoolargeexception – eduyayo

+0

@TinTran是的,就是這樣。 –

回答

0

我想你應該看的TransactionTooLarge例外,而不是StackOverflow的一個。 TransactionTooLarge有時可能很難找到,但通常它與Activity/Fragment之間發送的太多數據或存儲在savedInstanceState中的數據太多有關。如上評論指出的@eduyayo,你可以在這個帖子看看:

What to do on TransactionTooLargeException

我經歷了類似的錯誤而回,這是由於巨大的名單正在從通過活動的片段和崩潰本身發生在一個完全隨機的地方。