1. ホーム

[解決済み】戻るボタンを2回クリックしてアクティビティを終了する方法

2022-03-25 13:55:27

質問

最近、多くのAndroidアプリやゲームでこのパターンに気づきました。戻るボタンをクリックしてアプリケーションを終了するときに Toast のようなメッセージが表示され、「Please click BACK again to exit"」と表示されます。

よく見かけるようになったので疑問に思ったのですが、これはアクティビティでどうにかしてアクセスできる組み込み機能なのでしょうか?多くのクラスのソースコードを見てみましたが、そのようなことは見つからないようです。

もちろん、同じ機能を簡単に実現する方法はいくつか考えられますが(最も簡単なのは、ユーザーがすでに一度クリックしたかどうかを示すブール値をアクティビティに保持することでしょう...)、ここにすでに何かあるのではないかと思っていました。

EDIT : LAS_VEGAS さんがおっしゃるように、私は従来の意味での "exit" は本当に意味しませんでした。(つまり、アプリケーションの起動アクティビティが開始される前に開いていたものに戻るという意味です:)

解決方法は?

<ブロッククオート

Javaアクティビティで。

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }
        
    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
        
    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        
        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;                       
        }
    }, 2000);
} 

Kotlin Activityで。

private var doubleBackToExitPressedOnce = false
override fun onBackPressed() {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed()
            return
        }

        this.doubleBackToExitPressedOnce = true
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show()

        Handler(Looper.getMainLooper()).postDelayed(Runnable { doubleBackToExitPressedOnce = false }, 2000)
    }

このハンドラは、2秒後に変数をリセットするのに役立つと思います。