Search code examples
javaandroidlogcat

How to fix this error with logcat?


This report is submitted in my google play developer console. My app's full code is about 5000 lines, so I can't upload it all...

How to fix this strange error? I can't find anything in the logcat.

java.lang.RuntimeException: Unable to start activity ComponentInfo{pe.kmh.fm/pe.kmh.fm.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@412eb278: Unmarshalling unknown type code 2131034166 at offset 652
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
at android.app.ActivityThread.access$600(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5371)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@412eb278: Unmarshalling unknown type code 2131034166 at offset 652
at android.os.Parcel.readValue(Parcel.java:2032)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2255)
at android.os.Parcel.readSparseArray(Parcel.java:1687)
at android.os.Parcel.readValue(Parcel.java:2022)
at android.os.Parcel.readMapInternal(Parcel.java:2226)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1240)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1655)
at android.app.Activity.onRestoreInstanceState(Activity.java:938)
at com.actionbarsherlock.app.SherlockActivity.onRestoreInstanceState(Unknown Source)
at android.app.Activity.performRestoreInstanceState(Activity.java:910)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1133)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2321)
... 11 more

Edit: Add Parcelable Codes. - SearchedFileProperty Class

package pe.kmh.fm.prop;

import android.os.Parcel;
import android.os.Parcelable;

public class SearchedFileProperty extends FileProperty implements Parcelable {

    private String FilePath;

    public SearchedFileProperty(String _icon, String _name, String _date, String _size, String _path) {
        super(_icon, _name, _date, _size);
        FilePath = _path;
    }

    public SearchedFileProperty(Parcel in) {
        readFromParcel(in);
    }

    public String getPath() {
        return FilePath;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(super.getIcon());
        dest.writeString(super.getName());
        dest.writeString(FilePath);
        dest.writeString(super.getDate());
        dest.writeString(super.getSize());
    }

    public void readFromParcel(Parcel in) {
        super.setIcon(in.readString());
        super.setName(in.readString());
        FilePath = in.readString();
        super.setDate(in.readString());
        super.setSize(in.readString());
    }

    public static final Parcelable.Creator<SearchedFileProperty> CREATOR = new Parcelable.Creator<SearchedFileProperty>() {

        @Override
        public SearchedFileProperty createFromParcel(Parcel source) {
            return new SearchedFileProperty(source);
        }

        @Override
        public SearchedFileProperty[] newArray(int size) {
            return new SearchedFileProperty[size];
        }

    };
}
  • This class is used in SearchActivity, like this

    ArrayList filelist; filelist = intent.getParcelableArrayListExtra("filelist");

  • In MainActivity, call SearchActivity like This:

    // After search job (This app is file manager) Intent searchActivity = new Intent(MainActivity.this, SearchActivity.class); searchActivity.putParcelableArrayListExtra("filelist", arr); startActivity(searchActivity);


Solution

  • Fixed it.

    The problem is in Proguard, so I added this lines in my proguard-project.txt:

    -keep class * implements android.os.Parcelable {
      public static final android.os.Parcelable$Creator *;
    }
    

    Then the error perfectly fixed!

    Thanks for your answers.