本文的目的是介绍java-getSerializableExtra返回null的详细情况,特别关注java返回null的问题的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面
本文的目的是介绍java-getSerializableExtra返回null的详细情况,特别关注java返回null的问题的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解java-getSerializableExtra返回null的机会,同时也不会遗漏关于android java.io.NotSerializableException、android – getIntent().getStringExtra()返回null、android-编写Parcelable对象获取java.io.NotSerializableException、Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload ...的知识。
本文目录一览:- java-getSerializableExtra返回null(java返回null的问题)
- android java.io.NotSerializableException
- android – getIntent().getStringExtra()返回null
- android-编写Parcelable对象获取java.io.NotSerializableException
- Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload ...
java-getSerializableExtra返回null(java返回null的问题)
我的例子:
public static final String EXTRA_TARGET_FRAGMENT = "fragment_to_show";
public static void show(Activity pActivity,
Class<? extends Fragment> fragment) {
Intent intent = new Intent(pActivity, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(EXTRA_TARGET_FRAGMENT, fragment);
pActivity.startActivity(intent);
}
@SuppressWarnings("unchecked")
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
mUpcomingTarget = (Class<Fragment>) intent
.getSerializableExtra(EXTRA_TARGET_FRAGMENT);
}
mUpcomingTarget-> null,我无法理解问题所在.
解决方法:
putExtra(String, Serializable)
文档说
The name must include a package prefix, for example the app com.android.contacts would use names like “com.android.contacts.ShowAll”.
将您的EXTRA_TARGET_FRAGMENT更改为以包前缀开头.
android java.io.NotSerializableException
/ CRASH: co.zuren.rent (pid 8857) // Short Msg: java.io.NotSerializableException // Long Msg: java.io.NotSerializableException: android.widget.FrameLayout // Build Label: Xiaomi/2014011/HM2014011:4.2.2/HM2014011/JHFCNBL27.0:user/release-keys // Build Changelist: JHFCNBL27.0 // Build Time: 1422850989000 // java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = co.zuren.rent.controller.activity.PublishDateSecondActivity$1) // at android.os.Parcel.writeSerializable(Parcel.java:1279) // at android.os.Parcel.writeValue(Parcel.java:1233) // at android.os.Parcel.writeMapInternal(Parcel.java:591) // at android.os.Bundle.writeToParcel(Bundle.java:1627) // at android.os.Parcel.writeBundle(Parcel.java:605) // at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:132) // at android.os.Parcel.writeTypedArray(Parcel.java:1102) // at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:374) // at android.os.Parcel.writeParcelable(Parcel.java:1254) // at android.os.Parcel.writeValue(Parcel.java:1173) // at android.os.Parcel.writeMapInternal(Parcel.java:591) // at android.os.Bundle.writeToParcel(Bundle.java:1627) // at android.os.Parcel.writeBundle(Parcel.java:605) // at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2308) // at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3303) // at android.os.Handler.handleCallback(Handler.java:800) // at android.os.Handler.dispatchMessage(Handler.java:100) // at android.os.Looper.loop(Looper.java:194) // at android.app.ActivityThread.main(ActivityThread.java:5433) // 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:853) // at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) // at dalvik.system.NativeStart.main(Native Method) // Caused by: java.io.NotSerializableException: android.widget.FrameLayout // at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) // at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) // at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) // at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) // at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979) // at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368) // at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074) // at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404) // at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) // at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) // at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) // at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979) // at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368) // at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074) // at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404) // at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) // at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) // at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481) // at android.os.Parcel.writeSerializable(Parcel.java:1274)
PublishDateSecondActivity.java 已经序列化过了,他说FrameLayout是怎么回事?
android – getIntent().getStringExtra()返回null
protected void onPause() { super.onPause(); String receiver = phoneNoField.getText().toString(); String message = messageBody.getText().toString(); getIntent().putExtra(MESSAGE_RECEIVER,receiver); getIntent().putExtra(MESSAGE_BODY,message); Log.d(TAG,receiver + " " + message); } protected void onResume() { super.onResume(); String receiver = getIntent().getStringExtra(MESSAGE_RECEIVER); String message = getIntent().getStringExtra(MESSAGE_BODY); if(receiver != null) phoneNoField.setText(receiver); if(message != null) messageBody.setText(message); Log.d(TAG,receiver + " " + message); }
当调用onPause()方法时,我看到已经设置了值.但是在我的onResume()方法中,getStringExtra()始终返回null.我的做法有什么问题吗?
解决方法
您可以选择将值放在用于启动活动B的Intent中,然后再启动活动A以再次将值放入Intent中.另一种选择,我更喜欢使用SharedPreferences来完成这项工作.
android-编写Parcelable对象获取java.io.NotSerializableException
我有一个名为Shop的类,它具有2个字段和1个静态字段.该类实现Parcelable接口:
public class Shop implements Parcelable{
private static int SHOP_ID = 12;
private String name;
private long fund;
//constructor with parcel
public Shop(Parcel parcel){
name = parcel.readString();
fund = parcel.readLong();
}
//normal constructor
public Shop(Owner owner){
name = owner.getShopName();
fund = owner.getFund();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writetoParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeLong(fund);
}
public static final Creator<Shop> CREATOR = new Creator<Shop>(){
@Override
public Shop createFromParcel(Parcel parcel) {
//use the constructor which accept parcel
return new Shop(parcel);
}
@Override
public Shop[] newArray(int size) {
return new Shop[size];
}
};
}
现在,我的代码通过使用常规构造函数启动Shop实例:
Owner owner = getownerInfo();
Shop myShop = new Shop(owner); //initiate a Shop with owner
然后,我的代码将shop实例存储到Android的内部存储中:
String fileName = "shop_file";
try{
FileOutputStream fos = activity.openFileOutput(fileName,Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(myShop);
oos.flush();
oos.close();
}catch(Exception ex){
...
}
但是当运行我的应用程序时,我得到了java.io.NotSerializableException:
06-12 13:04:29.258: W/System.err(2632): java.io.NotSerializableException: com.my.app.model.Shop
06-12 13:04:29.258: W/System.err(2632): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
06-12 13:04:29.266: W/System.err(2632): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
06-12 13:04:29.266: W/System.err(2632): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
为什么?我哪里错了?
解决方法:
从执行看来,您正在尝试序列化未实现Serializable的CartData实例:
java.io.NotSerializableException: com.my.app.model.Shop
如果要序列化,则应让Shop implemensts Serializable
从doc开始
Parcel is not a general-purpose serialization mechanism. This class
(and the corresponding Parcelable API for placing arbitrary objects
into a Parcel) is designed as a high-performance IPC transport. As
such, it is not appropriate to place any Parcel data in to persistent
storage: changes in the underlying implementation of any of the data
in the Parcel can render older data unreadable.
Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload ...
2019-08-20 17:53:24,054 [ERROR] [http-nio-8047-exec-1] [HttpResult.java : 143] 系统异常
org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [VCodeModel]
at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:93)
at org.springframework.data.redis.core.AbstractOperations.rawValue(AbstractOperations.java:117)
at org.springframework.data.redis.core.DefaultValueOperations.set(DefaultValueOperations.java:180)
at com.chinanums.invoice.service.impl.RedisServiceImpl.saveVCode(RedisServiceImpl.java:30)
at com.chinanums.invoice.service.impl.MsgServiceImpl.send(MsgServiceImpl.java:88)
at com.chinanums.invoice.controller.MsgController.msg(MsgController.java:36)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [VCodeModel]
at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:68)
at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:35)
at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:91)
... 66 common frames omitted
Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [VCodeModel]
at org.springframework.core.serializer.DefaultSerializer.serialize(DefaultSerializer.java:43)
at org.springframework.core.serializer.support.SerializingConverter.convert(SerializingConverter.java:63)
... 68 common frames omitted
原因是这个VCodeModel这个类没有进行序列化,所以会报出来这样的异常.
将这个类实现序列化,以后,就不会出现下面的异常了.
今天的关于java-getSerializableExtra返回null和java返回null的问题的分享已经结束,谢谢您的关注,如果想了解更多关于android java.io.NotSerializableException、android – getIntent().getStringExtra()返回null、android-编写Parcelable对象获取java.io.NotSerializableException、Caused by: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload ...的相关知识,请在本站进行查询。
本文标签: