当我点击自动链接 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 在加载时崩溃

当我点击我的应用程序中的注册用户片段时应用程序崩溃..其中包含recyclerview

单击链接时,Android WebView 崩溃