gpt4 book ai didi

java - 按下主页按钮时 Android 应用程序崩溃但方向更改正常

转载 作者:行者123 更新时间:2023-11-30 01:35:44 24 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,其中 fragment 使用动态创建的 View 。我的 fragment 中的部分 onSaveInstanceState() 方法如下:

outState.putSerializable("intToRow", (HashMap<Integer, View>) intToRow);

当我注释掉这一行时,一切正常。我暂时保留了这一行,这就是问题所在:当我旋转屏幕时,效果很好,我可以在 onCreate() 中使用

访问它
intToRow = (HashMap) savedInstanceState.getSerializable("intToRow");

当操作栏上的后退按钮被按下时, fragment 和 Activity 关闭没有任何问题。那么,为什么当我按下主页按钮或多任务按钮时,应用程序崩溃了?堆栈跟踪是:

java.lang.RuntimeException: Parcel: unable to marshal value android.widget.TextView{383ee509 V.ED.... ........ 246,0-492,57 #3}
at android.os.Parcel.writeValue(Parcel.java:1337)
at android.os.Parcel.writeMapInternal(Parcel.java:614)
at android.os.Parcel.writeMap(Parcel.java:598)
at android.os.Parcel.writeValue(Parcel.java:1255)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.app.FragmentState.writeToParcel(Fragment.java:147)
at android.os.Parcel.writeTypedArray(Parcel.java:1191)
at android.app.FragmentManagerState.writeToParcel(FragmentManager.java:380)
at android.os.Parcel.writeParcelable(Parcel.java:1357)
at android.os.Parcel.writeValue(Parcel.java:1262)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3116)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3695)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5832)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

我见过很多关于整个 Parcel: unable to marshal value 错误的问题,但我的问题似乎与其中任何一个都不匹配。在我的应用程序中,方向改变和破坏 fragment 似乎工作得很好,但按下主页按钮会使它崩溃。我已经经历了 Android 生命周期,但我看不到按下 Home 键时应该发生的任何事情,否则不会发生。

最佳答案

这个答案确实让我朝着正确的方向前进,但实现起来却令人困惑。该类可以是

public class item { ... }

要解决编码问题,只需使类可序列化

public class item implements Serializable { .. } 

希望这对某人有所帮助...

关于java - 按下主页按钮时 Android 应用程序崩溃但方向更改正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35129003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com