0

継続的に動作するタイマーがあります。戻るボタンを押すと、そのインテントを終了するか、戻ってタイマーを戻すことができるダイアログが表示され、戻るボタンによって停止されたものが表示されます。続きをクリックすると、onResume()メソッドによってタイマーが続行され、正常に機能します。ただし、ダイアログが画面に表示されているときに戻るボタンを押すと、ダイアログで[続行]を押した場合と同じようにタイマーをオンにします。しかし、代わりに、戻るボタンを押しても何も起こらず、タイマーが停止します。一部のメソッドは、タイマーが作動している場合、またはダイアログによって停止されている場合にのみ機能するため、これは適切ではありません。ただし、ダイアログがなく、タイマーが停止している場合、多数の潜在的なエラーが発生する可能性があります。では、ダイアログが画面に表示されているときにユーザーが戻るボタンを押すのを止めるにはどうすればよいですか?私はこのようなことを試みました:

if ((keycode==back) && a=0 ) {... a=1 , onPuase()}  // dialog comes in onPause() just happened
else ((keycode==back) && a=1 ) {... a=0, onResume()}  //I want onResume() to happen here  

しかし、それは良くありません。ダイアログは最初の[戻る]ボタンに表示され、2番目の[戻る]に表示されなくなります(ここでは何も起こりません)。タイマーはここでも停止していますが、3番目の戻るボタンでタイマーが開始されます。したがって、ユーザーがもう一度押す必要があることを知らないため、問題を引き起こす可能性のある不必要なBackがあります...

4

3 に答える 3

0

ダイアログが表示されているときにユーザーが BACK を押したときに通知を受け取りたい場合は、OnDismissListenerを使用します。

于 2012-09-02T17:56:43.843 に答える
0

いくつかのアドバイス:

  1. onResume/onPause を手動で呼び出さないでください。システムだけが呼び出してください。そうしないと、さまざまなデバイスで説明のつかない問題が発生します。
  2. 本当に OnDismissListener を使用したい ( http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html )。ICS から起動すると、Back キーを押すだけでなく、画面のどこか、ダイアログの外側をタップしても、ダイアログを閉じることができます。
  3. 「戻る」および「ダイアログをタップする」ことによってダイアログを閉じるのを防ぎたい場合は、 setCancellable(false) http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean ) を使用しますダイアログ。

幸運を

于 2012-09-02T18:00:39.220 に答える