Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过意图将对象传递给新活动时的空指针_Java_Android_Android Intent_Ixmlserializable - Fatal编程技术网

Java 通过意图将对象传递给新活动时的空指针

Java 通过意图将对象传递给新活动时的空指针,java,android,android-intent,ixmlserializable,Java,Android,Android Intent,Ixmlserializable,所以我在这个网站(和其他网站)上读了很多问题,但我找不到一个有效的代码解决方案,所以我想下一步就是把它发布在这里。我正在做一个迷宫游戏。我有一个生成活动和一个播放活动,我正在尝试将生成的迷宫对象传递给播放活动。迷宫是可序列化的,但是当我试图在PlayActivity中从我的意图中获取迷宫时,它返回了一个空指针异常。任何想法都会很棒 Maze: public class Maze implements Serializable { private static final long serial

所以我在这个网站(和其他网站)上读了很多问题,但我找不到一个有效的代码解决方案,所以我想下一步就是把它发布在这里。我正在做一个迷宫游戏。我有一个生成活动和一个播放活动,我正在尝试将生成的迷宫对象传递给播放活动。迷宫是可序列化的,但是当我试图在PlayActivity中从我的意图中获取迷宫时,它返回了一个空指针异常。任何想法都会很棒

Maze:
public class Maze implements Serializable {

private static final long serialVersionUID = 1L;
然后生成活动:

Intent playIntent = new Intent(this , PlayActivity.class);
playIntent.putExtra("MadeMaze" , maze);
startActivity(playIntent);
最后是游戏活动:

maze = (Maze) getIntent().getSerializableExtra("MadeMaze");
System.out.print(maze.mazecells.toString());
System.out.print("here");
我知道有人可能会建议使用Parcelable,但我的迷宫类有太多的数据字段,似乎不太值得(除非有人有充分的理由)

编辑:以下是日志:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity        ComponentInfo{edu.wm.cs.cs301.jesavino/edu.wm.cs.cs301.jesavino.UI.PlayActivity}: java.lang.NullPointerException

11-20 21:46:37.614: E/AndroidRuntime(1940):     at     android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at     android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.os.Looper.loop(Looper.java:137)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.app.ActivityThread.main(ActivityThread.java:5103)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at java.lang.reflect.Method.invokeNative(Native Method)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at java.lang.reflect.Method.invoke(Method.java:525)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at dalvik.system.NativeStart.main(Native Method)
11-20 21:46:37.614: E/AndroidRuntime(1940): Caused by: java.lang.NullPointerException
11-20 21:46:37.614: E/AndroidRuntime(1940):     at edu.wm.cs.cs301.jesavino.UI.PlayActivity.onCreate(PlayActivity.java:36)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.app.Activity.performCreate(Activity.java:5133)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-20 21:46:37.614: E/AndroidRuntime(1940):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
11-20 21:46:37.614: E/AndroidRuntime(1940):     ... 11 more

System.out.print(maze.toString())不应为空,请检查它

请尝试使用Bundle

Intent playIntent = new Intent(this , PlayActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("MadeMaze", maze);
playIntent.putExtras(bundle);
startActivity(playIntent);
在游戏活动中

 maze = (Maze) getIntent().getExtra().getSerializable("MadeMaze");

试着在迷宫课上实现Parcelable


Android不支持Serializable,当您尝试在Android上下文之间发送数据时,应首先使用Parcelable。

Post logcat error hereDid您检查以确保maze.mazecells不为空?请发布堆栈跟踪。
Serializable
受支持,但速度比
Parcelable
慢,我可以用较慢的速度,由于我必须在MazeYou中添加的属性的数量是正确的,所以看起来Parcelable将需要更多的工作,MazeYou不是空的,特别是mazecells是空的。但这是在生成活动中设置(测试)的,所以我不明白为什么一个字段不会转移