视图拖放更新时出现stackoverflow错误

时间:2016-09-27 09:43:33

标签: android drag-and-drop views viewgroup

我正在使用ondragListener进行视图拖动。我的根是viewgroup,在根目录中有更多viewgroup个容器,并且在容器中添加了imageview/textview之类的视图。

如果我使用唯一的容器(ViewGroup)(例如linearlayout)来拖放它的工作正常但是如果我开始在这些容器中添加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)

1 个答案:

答案 0 :(得分:0)

我认为您应该查看fig异常而不是StackOverflow异常。 TransactionTooLarge有时可能很难追踪,但通常与TransactionTooLarge / Activity之间发送的或存储在Fragment中的过多数据有关。正如@eduyayo在上面的评论中指出的那样,你可以看一下这篇文章:

What to do on TransactionTooLargeException

我在一段时间内遇到了类似的错误,这是由于一个巨大的列表从一个Activity传递到一个片段而且崩溃本身发生在一个完全随机的地方。