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

Nig*_*Owl 14 android drag-and-drop views viewgroup

我正在使用ondragListener视图拖动.我的root是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);}
Run Code Online (Sandbox Code Playgroud)

错误日志:

 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)
Run Code Online (Sandbox Code Playgroud)

pat*_*ist 0

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

遇到 TransactionTooLargeException 时该怎么办

不久前我遇到了类似的错误,这是由于一个巨大的列表从一个 Activity 传递到一个 Fragment,并且崩溃本身发生在一个完全随机的地方。