【问题标题】:java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 558780 bytes when navigating between fragmentjava.lang.RuntimeException: android.os.TransactionTooLargeException: 在片段之间导航时数据包大小 558780 字节
【发布时间】:2019-03-13 22:31:54
【问题描述】:

我正在使用Bundle 在活动和片段之间传输数据。当我从一个片段导航到新片段时,没有传输数据或使用Bundle 获取数据,应用程序崩溃并出现以下错误。

> > 10-09 11:36:09.100 467-467/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 558780) 10-09 11:36:09.101 467-467/?
> D/AndroidRuntime: Shutting down VM 10-09 11:36:09.101 467-467/?
> E/AndroidRuntime: FATAL EXCEPTION: main

进程:com.xxxx.xxxxmobileapp.debug,PID:467 java.lang.RuntimeException:android.os.TransactionTooLargeException: 数据包大小 558780 字节 在 android.app.ActivityThread$StopInfo.run(ActivityThread.java:4156) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6682) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 引起:android.os.TransactionTooLargeException:数据包大小558780字节 在 android.os.BinderProxy.transactNative(本机方法) 在 android.os.BinderProxy.transact(Binder.java:628) 在 android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4149) 在 android.app.ActivityThread$StopInfo.run(ActivityThread.java:4148) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6682) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

我们可以使用桥接器或任何第三方工具来解决问题吗?如何解决这个问题?

【问题讨论】:

    标签: android android-fragments android-activity android-bundle


    【解决方案1】:

    您必须像这样使用Bundle 传递一个长字符串,并且您必须清除接收数据的Bundle。您可以使用任何认为好的方式。

    1.方法:

    Bundle bundle = new Bundle();
    bundle.putString("This is just for testing purpose", "Developer program");
    

    清除Fragment上的捆绑对象

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) 
    {
        String recStr= bundle.get("This is just for testing purpose");       
        bundle.clear();   
    }
    

    2.方法

    @Override
    protected void onSaveInstanceState(Bundle oldInstanceState) 
    {
        super.onSaveInstanceState(oldInstanceState);
        oldInstanceState.clear();
    }
    

    它会帮助你。

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      相关资源
      最近更新 更多