2017-03-18 13 views
2

私はAndroidで簡単なダイスゲームを作成しました。ユーザーが「ゲームを終了」ボタンを押すと、「感謝のために」というトーストを表示してから、アプリケーションを終了したいと考えています。現在、これは私がやっていることです(グローバルタイマはTimer timer;と宣言しています)。アプリがJavaで閉じる前にトーストを表示

if (v.equals(endGame)) { //if "end game" button was clicked 
    timer = new Timer(); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
     Toast t = Toast.makeText(getApplicationContext(), "Thanks for playing", Toast.LENGTH_LONG); 
     t.show(); 
    }, 2000, 2000); 

    System.exit(0); //quits the app 

現在のところ、アプリケーションは単にトースト表示なしで終了します。これを正しく実装するためには何が必要ですか?

+0

があなたの代わりに、タイマーのハンドラを試してみました(私はオフブラケットを持っているかもしれませんか)? – seekingStillness

+0

いいえ、私はしていません。それはどのように働くでしょうか? – Eragon20

+1

は基本的にメインスレッドでトーストを呼び出し、2秒後にアプリケーションを終了するハンドラを追加します。ハンドラの多くの例はスタックオーバーフローでここにあります – seekingStillness

答えて

1

このような何かが

if (v.equals(endGame)) { //if "end game" button was clicked 
Toast t = Toast.makeText(getApplicationContext(), "Thanks for playing",  Toast.LENGTH_LONG); 
    t.show(); 
Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       // end app; 
      } 
     }, 2000); //2 seconds 
} 
+0

これはうまくいきました!ありがとう! – Eragon20

1

onBackPressed()メソッドをオーバーライドするだけで、ユーザーがメインのアクティビティを終了するときに[戻る]ボタンを押すたびにチェックすることができます。その方法では、あなたのトーストをポップアップし、プログラムを終了してください。

Exit用に別のボタン機能が用意されている場合は、Button.onClickからonBackPressed()メソッドを呼び出して、オーバーライドされたメソッドをうまく呼び出す必要があります。

関連する問題