2

我一直在玩月球着陆器示例,并在尝试实现关于屏幕时遇到了问题。我将其中一个菜单项(在 onCreateOptionsMenu 中)更改为“关于”选项。选择此选项后,将启动一个新 Activity 并显示一个关于屏幕。

@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]  

谁能帮我弄清楚发生了什么?每当我尝试从其他东西(无论是从偏好活动、帮助活动还是从主屏幕)返回游戏屏幕时,我都会遇到同样的问题。谢谢

4

1 回答 1

2

小说给出的链接让我找到了答案。问题不在我的代码中,而是由于 Lunar Lander 示例中的一个缺陷(它没有正确处理其线程)。

对于任何寻找不使用 Lunar Lander 有缺陷的框架的稳定游戏循环的人,我发现这个示例运行良好:http ://blorb.tumblr.com/post/236799414/simple-java-android-game-loop

谢谢您的帮助

于 2011-01-18T23:12:28.423 回答