我一直在玩月球着陆器示例,并在尝试实现关于屏幕时遇到了问题。我将其中一个菜单项(在onCreateOptionsMenu中)更改为“about”选项。选择此选项后,将启动一个新活动并显示一个关于屏幕。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ABOUT:
startActivity(new Intent(this, About.class));
return true;
//Other cases
}
return false;
}
这完美无缺,焦点转移到新的活动。但是,当我按下手机返回游戏时,程序崩溃了。我收到这个错误:
Thread [<3> main] (Suspended (exception IllegalThreadStateException))
LunarView(SurfaceView).updateWindow(boolean) line: 465
LunarView(SurfaceView).onWindowVisibilityChanged(int) line: 189
LunarView(View).dispatchWindowVisibilityChanged(int) line: 3782
FrameLayout(ViewGroup).dispatchWindowVisibilityChanged(int) line: 704
FrameLayout(ViewGroup).dispatchWindowVisibilityChanged(int) line: 704
PhoneWindow$DecorView(ViewGroup).dispatchWindowVisibilityChanged(int) line: 704
ViewRoot.performTraversals() line: 710
ViewRoot.handleMessage(Message) line: 1650
ViewRoot(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4595
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 860
ZygoteInit.main(String[]) line: 618
NativeStart.main(String[]) line: not available [native method]
任何人都可以帮我弄清楚发生了什么事吗?每当我尝试从其他东西(无论是来自首选项活动,帮助活动,还是来自主屏幕)回到游戏屏幕时,我都会遇到同样的问题。感谢
答案 0 :(得分:2)
小说给出的链接让我得到答案。问题不在我的代码中,这是由于Lunar Lander示例中的缺陷(它没有正确处理其线程)。
对于那些寻找不使用Lunar Lander有缺陷框架的稳定游戏循环的人来说,我发现这个例子非常有效:http://blorb.tumblr.com/post/236799414/simple-java-android-game-loop
感谢您的帮助