0

Android アプリケーションで、ゲームのメイン画面に移動するように戻るボタンの機能を変更しました。メイン画面にあるので、戻るボタンでアプリケーション全体を終了するにはどうすればよいですか?

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
          Assets.getInstance().getClick().play(1);
          this.clearScreenStack();
          this.setScreen(new MainMenuScreen(this));
        return true;
    }

    return super.onKeyDown(keyCode, event);
}
4

5 に答える 5

1

Android の設計では、選択によってアプリケーションを終了するのではなく、OS によってアプリケーションを管理します。対応するインテントによってホーム アプリケーションを起動できます。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

checkアプリを終了してホーム画面を表示するには?

于 2012-11-28T14:50:24.457 に答える
1

どの画面が表示されているかを確認するために使用できるメカニズムがある場合は、次のようなことができます。

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        if(mainScreenIsShowing == true){
            //If the main screen is showing let the back button
            //have its default behavior.
            return super.onKeyDown(keyCode, event);
        }else{
            Assets.getInstance().getClick().play(1);
            this.clearScreenStack();
            this.setScreen(new MainMenuScreen(this));
            return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}
于 2012-11-28T15:03:34.777 に答える
0

これは議論の余地のあるテーマですが、戻るボタンを押したときにアプリケーションが終了したり、問題が発生したりすることはありません。結局のところ、finish()の呼び出しは、戻るボタンのデフォルトの動作です。メイン画面を処理するアクティビティがアクティビティスタックの一番下にある場合、finish()を呼び出すとアプリケーションが終了します。

私は次のことを提案します。MainMenuScreenを、メインアクティビティである別のアクティビティMainMenuActivityで処理できるようにします。MainMenuActivityに戻るときに他のアクティビティをfinish()し、MainMenuActivityで次のようにonKeyDownを処理します。

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        this.finish()
    }
}
于 2012-11-28T15:07:07.863 に答える
0

Google は終了ボタンを思いとどまらせます。OS に処理させるべきです。

これを読んでください: アプリケーションを終了することは眉をひそめていますか?

あなたが本当に終了したいのなら仕方ありませんが、私はこれについて言及したいと思いました.

于 2012-11-28T14:51:01.900 に答える
0

ユーザーが戻るボタンを 2 回入力したかどうかも確認できます。

boolean backPressed = false;
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && !backPressed) {
          Assets.getInstance().getClick().play(1);
          this.clearScreenStack();
          this.setScreen(new MainMenuScreen(this));
          backPressed = true;
        return true;
    }

    backPressed = false;
    return super.onKeyDown(keyCode, event);
}
于 2012-11-28T14:58:58.447 に答える