当我点击自动链接 url 时,应用程序崩溃
Posted
技术标签:
【中文标题】当我点击自动链接 url 时,应用程序崩溃【英文标题】:When i click on autolink url, app crash 【发布时间】:2018-03-26 10:01:06 【问题描述】:致命异常:主要 进程:com.stonker,PID:4874 java.lang.RuntimeException: Parcelable 遇到写入可序列化对象的 IOException (name = com.stonker.activity.Response.ProfileDatum) 在 android.os.Parcel.writeSerializable(Parcel.java:1468) 在 android.os.Parcel.writeValue(Parcel.java:1416) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:686) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330) 在 android.os.Bundle.writeToParcel(Bundle.java:1079) 在 android.os.Parcel.writeBundle(Parcel.java:711) 在 android.support.v4.app.FragmentState.writeToParcel(Fragment.java:147) 在 android.os.Parcel.writeTypedArray(Parcel.java:1254) 在 android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:403) 在 android.os.Parcel.writeParcelable(Parcel.java:1437) 在 android.os.Parcel.writeValue(Parcel.java:1343) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:686) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330) 在 android.os.Bundle.writeToParcel(Bundle.java:1079) 在 android.os.Parcel.writeBundle(Parcel.java:711) 在 android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3153) 在 android.app.ActivityThread$StopInfo.run(ActivityThread.java:3417) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.io.NotSerializableException:com.stonker.activity.Response.ProfileDatum$Address 在 java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344) 在 java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461) 在 java.util.ArrayList.writeObject(ArrayList.java:648) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1033) 在 java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384) 在 java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461) 在 java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959) 在 java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360) 在 java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054) 在 java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384) 在 java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461) 在 android.os.Parcel.writeSerializable(Parcel.java:1463) 在 android.os.Parcel.writeValue(Parcel.java:1416) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:686) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330) 在 android.os.Bundle.writeToParcel(Bundle.java:1079) 在 android.os.Parcel.writeBundle(Parcel.java:711) 在 android.support.v4.app.FragmentState.writeToParcel(Fragment.java:147) 在 android.os.Parcel.writeTypedArray(Parcel.java:1254) 在 android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:403) 在 android.os.Parcel.writeParcelable(Parcel.java:1437) 在 android.os.Parcel.writeValue(Parcel.java:1343) 在 android.os.Parcel.writeArrayMapInternal(Parcel.java:686) 在 android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1330) 在 android.os.Bundle.writeToParcel(Bundle.java:1079) 在 android.os.Parcel.writeBundle(Parcel.java:711) 在 android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3153) 在 android.app.ActivityThread$StopInfo.run(ActivityThread.java:3417) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
这是我的布局文件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_
android:layout_>
<TextView
android:id="@+id/fieldTextView"
android:layout_
android:layout_
android:textColor="@color/profile_fields_color"
android:textSize="@dimen/intro_text_size"
android:singleLine="true"
android:autoLink="web"
android:textColorLink="@color/profile_fields_color"
android:layout_marginLeft="@dimen/dp_5"
android:text="@string/account"/>
</LinearLayout>
public class ProfileDatum implements Serializable
@SerializedName("web")
@Expose
private ArrayList<Web> web = new ArrayList<>();
public ArrayList<Web> getWeb()
return web;
public class Web implements Serializable
@SerializedName("url")
@Expose
private String url="";
public String getUrl()
return url;
public void setUrl(String url)
this.url = url;
**typeTextView.setText(mWebArrayList.get(i).getUrl());**
当我点击 textview autolink 时,它会给出可序列化对象异常。 请帮忙。 提前谢谢你。
【问题讨论】:
这不是ProfileDatum
的实现导致你的崩溃。
按主页按钮时也会崩溃。
【参考方案1】:
问题来了:
java.io.NotSerializableException: com.stonker.activity.Response.ProfileDatum$Address
您正在尝试序列化一个不可序列化的内部类(称为地址)。它可能在某个其他类的字段中。
需要更改的代码尚未包含在您的问题中。
【讨论】:
你是对的,问题出在地址类。忘记实现可序列化。【参考方案2】:通过实现可序列化解决。
【讨论】:
以上是关于当我点击自动链接 url 时,应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 9.3 使用 URL 方案(深度链接)调用时构建崩溃 [重复]
当我创建 DDXMLDocument 的自动释放对象时,我的应用程序崩溃了
当我在项目应用程序中安装并链接 react-native-admob 在加载时崩溃