2016-09-27 1 views
13

ビューのドラッグにondragListenerを使用しています。私のルートはviewgroupで、ルートにはviewgroupのコンテナがあり、imageview/textviewのようなビューをコンテナに追加しています。ビュー上のスタックオーバーフローのエラードラッグドロップの更新

linearlayoutのような唯一のコンテナ(ViewGroup)をドラッグアンドドロップするとうまくいきますが、これらのコンテナ内にimageviewのようなビューを追加してもドラッグポイントはこのビューを保持するコンテナです。

onActionDropstackoverflow 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の1を見てされるべきだと思います。 TransactionTooLargeは追跡するのが難しい場合もありますが、通常は、あまりにも多くのデータがActivity/Fragmentの間で送信されるか、savedInstanceStateに格納されることと関係があります。

What to do on TransactionTooLargeException

は、私はしばらく前に同様のエラーを経験し、それから渡された巨大なリストによるものであった:上記のコメントで@eduyayoで指摘したように、あなたはこの記事を見てみることができ断片へのアクティビティとクラッシュ自体は完全にランダムな場所で発生しました。