2

私は月着陸船の例をいじってみましたが、アバウトスクリーンを実装しようとしたときに問題が発生しました。(onCreateOptionsMenuの)メニュー項目の1つを「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]  

誰かが私が何が起こっているのか理解するのを手伝ってもらえますか?他の何かからゲーム画面に戻ろうとすると、同じ問題が発生します(設定アクティビティ、ヘルプアクティビティ、またはホーム画面のいずれからでも)。ありがとう

4

1 に答える 1

2

フィクションが与えたリンクは私を答えに導きました。問題は私のコードにはありませんでした。LunarLanderの例の欠陥が原因でした(スレッドを適切に処理しません)。

Lunar Landerの欠陥のあるフレームワークを使用しない安定したゲームループを探している人にとって、この例は非常にうまく機能することがわかりました:http: //blorb.tumblr.com/post/236799414/simple-java-android-game-loop

助けてくれてありがとう

于 2011-01-18T23:12:28.423 に答える