当屏幕上出现对话框时,android控制后退按钮

时间:2012-09-02 17:52:05

标签: android dialog back

我有一个持续运行的计时器。当我按下BACK按钮时,我做了一个对话框,出现在那里你可以退出那个意图,或者返回并使用BACK按钮停止计时器。好吧,如果我点击contimnue,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  

但这并不好。对话框出现在第一个后退按钮上然后它消失在第二个后退(这里没有任何反应)。计时器仍在这里停止,但第三个后退按钮启动计时器。所以有一个不必要的背部会导致麻烦,因为使用者不会知道他们必须再次按下它...

3 个答案:

答案 0 :(得分:0)

如果您希望在显示对话框时用户按下BACK时收到通知,请使用OnDismissListener

答案 1 :(得分:0)

一些建议:

  1. 不要手动调用onResume / onPause,只有系统应该这样做。否则,您将在各种设备上遇到无法解释的问题。
  2. 您真的想使用OnDismissListener(http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html)。从ICS开始,对话框不仅可以通过按返回键来解除,还可以通过点击对话框外的屏幕上的某个位置来解除。
  3. 如果您想通过“返回”和“点击对话框”来阻止解除对话框 - 请使用setCancellable(false)http://developer.android.com/reference/android/app/Dialog.html#setCancelable(boolean)进行对话。
  4. 祝你好运

答案 2 :(得分:0)

在DialogClass中实现OnDismissListener

并覆盖OnDismiss方法

    @Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    //you can control back button from here 
}