此报告是在我的google play开发者控制台中提交的。 我的应用程序的完整代码大约是5000行,所以我无法全部上传...
如何解决这个奇怪的错误?我在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
编辑:添加Parcelable代码。 - 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];
}
};
}
此类用于SearchActivity,如此
ArrayList文件列表; filelist = intent.getParcelableArrayListExtra(“filelist”);
在MainActivity中,调用SearchActivity,如:
//搜索工作后(此应用为文件管理员) Intent searchActivity = new Intent(MainActivity.this,SearchActivity.class); searchActivity.putParcelableArrayListExtra(“filelist”,arr); startActivity(searchActivity);
答案 0 :(得分:0)
根据您的堆栈跟踪,
看起来,您正在尝试readValue
并以不同类型存储。
long _id = source.readInt(); // This is wrong
long _id = source.readLong(); // This is correct
答案 1 :(得分:0)
There are tools in idea (IntelliJ) 可以为您生成parcelable。只是尝试在此类上重新生成Parcelable代码,您将收到错误。
答案 2 :(得分:0)
修正了它。
问题在于Proguard,所以我在proguard-project.txt中添加了这些行:
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
然后错误完美修复!
感谢您的回答。