【问题标题】:stackoverflow error on view drag drop update视图拖放更新时出现stackoverflow错误
【发布时间】:2017-02-04 21:21:18
【问题描述】:

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

如果我使用像 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)

【问题讨论】:

  • 这是完整的堆栈跟踪吗?
  • 您的代码似乎是正确的,但问题可能在于您从一个容器移动到另一个容器的视觉组件数量,您可能需要销毁并重新创建拖动的视图或类似的东西。请参阅其他问题stackoverflow.com/questions/11451393/…
  • @TinTran 是的,就是这样。
  • 您能否显示完整的代码,将DragListener 分配给Views,以及DragListener 本身的代码?
  • 我认为您的视图层次结构中可能有一个循环。 resetResolvedLayoutDirection 上的堆栈溢出通常表明了这一点。发生这种情况的原因有很多(如果您搜索的话,许多原因会在 SO 中记录),具体取决于您如何创建/扩充它们。

标签: android drag-and-drop views viewgroup


【解决方案1】:

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

What to do on TransactionTooLargeException

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多