0

我有一个持续运行的计时器。当我按下 BACK 按钮时,我会出现一个对话框,您可以在其中退出该意图或返回并继续计时器已被 BACK 按钮停止的内容。好吧,如果我单击继续, onResume() 方法会使计时器继续并且工作良好。但是,如果我在屏幕上显示对话框时按下后退按钮,我希望计时器继续运行,就像我在对话框上按下 Continue 一样。但是,相反,我按下后退按钮并没有任何反应,计时器停止了,这对我不利,因为我的一些方法仅在计时器正在运行或被对话框停止时才有效。但是,如果没有对话并且计时器停止,则可能会发生许多潜在的错误。那么当对话框在屏幕上时,如何阻止用户按下后退按钮?我试过这样的事情:

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  

但这并不好。该对话框出现在第一个 Back 按钮上,然后在第二个 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 回答
0

在您的 DialogClass 中实现 OnDismissListener

并覆盖 OnDismiss 方法

    @Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    //you can control back button from here 
}
于 2014-03-10T12:13:04.837 回答