Closed lylelqc closed 5 years ago
怎么看也是序列化的问题,比如这句Caused by: java.io.NotSerializableException: com.exmaple.app.ui.match.EnrollInActivity,这个类若作为数据类,需要实现Serializable这个接口。这问题跟lib无关
怎么看也是序列化的问题,比如这句Caused by: java.io.NotSerializableException: com.exmaple.app.ui.match.EnrollInActivity,这个类若作为数据类,需要实现Serializable这个接口。这问题跟lib无关
activity也不能实现Serializable吧,这只是启动girdactivity的类啊
com.exmaple.app.ui.match.EnrollInActivity这个类不是lib里的 至于怎么启动ImageGridActivity,这个项目里没有特殊的地方,就是: ··· Intent intent = new Intent(WxDemoActivity.this, ImageGridActivity.class); intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS, true); // 是否是直接打开相机 startActivityForResult(intent, REQUEST_CODE_SELECT); ···
这个WxDemoActivity也没特殊的地方
com.exmaple.app.ui.match.EnrollInActivity这个类不是lib里的 至于怎么启动ImageGridActivity,这个项目里没有特殊的地方,就是: ··· Intent intent = new Intent(WxDemoActivity.this, ImageGridActivity.class); intent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS, true); // 是否是直接打开相机 startActivityForResult(intent, REQUEST_CODE_SELECT); ···
这个WxDemoActivity也没特殊的地方
嗯嗯,我确实是这样启动的 /Intent cameraIntent = new Intent(this, ImageGridActivity.class); cameraIntent.putExtra(ImageGridActivity.EXTRAS_TAKE_PICKERS, true); // 是否是直接打开相机 cameraIntent.putExtra(ImageGridActivity.EXTRAS_IMAGES, images); startActivityForResult(cameraIntent, IMAGE_CAMERA);/ 而且有配置Imagepicker,就是在启动拍照模式的时候,ImageGirdActivity报这个异常闪退了
直接拍照是不能传递images的
错误代码: imagePicker.setImageLoader(new ImageLoader() { @Override public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) { 。。。 }
@Override
public void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height) {
。。。 }
@Override
public void clearMemoryCache() {
}
});
解决问题: imagePicker.setImageLoader(new GlideImageLoader());
public class GlideImageLoader implements ImageLoader { @Override public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) { 。。。 }
@Override
public void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height) {
。。。
}
@Override
public void clearMemoryCache() {
}
}
错误代码: imagePicker.setImageLoader(new ImageLoader() { @override public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) { 。。。 }
@Override public void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height) {
。。。 }
@Override public void clearMemoryCache() { } });
解决问题: imagePicker.setImageLoader(new GlideImageLoader());
public class GlideImageLoader implements ImageLoader { @override public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) { 。。。 }
@Override public void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height) { 。。。 } @Override public void clearMemoryCache() { }
}
是这样的吗
嗯 亲测 把GlideImageLoader 单独拎出来一个java文件就没事了
嗯 亲测 把GlideImageLoader 单独拎出来一个java文件就没事了
好的,待我回去试试
在gridview中调起拍照,老是报这个错误 -Parcelable encountered IOException writing serializable object,发现是ImageGridActivity这个崩溃了,怎么解决?
日志如下 2019-06-10 14:19:44.151 7037-7037/com.exmaple.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.xiumei.app, PID: 7037 java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.exmaple.app.ui.match.EnrollInActivity$EnrollImageLoader) at android.os.Parcel.writeSerializable(Parcel.java:1717) at android.os.Parcel.writeValue(Parcel.java:1665) at android.os.Parcel.writeArrayMapInternal(Parcel.java:878) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1588) at android.os.Bundle.writeToParcel(Bundle.java:1233) at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:3954) at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6815) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) Caused by: java.io.NotSerializableException: com.exmaple.app.ui.match.EnrollInActivity at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354) at android.os.Parcel.writeSerializable(Parcel.java:1712) at android.os.Parcel.writeValue(Parcel.java:1665) at android.os.Parcel.writeArrayMapInternal(Parcel.java:878) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1588) at android.os.Bundle.writeToParcel(Bundle.java:1233) at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:3954) at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6815) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)