OnPause和返回按钮

时间:2012-03-30 10:35:02

标签: android

我在活动中有暂停,效果很好。这是代码

@Override
protected void onPause() {
    super.onPause();
    Intent intent;

    intent = new Intent(Games.this, PauseScreen.class);
    startActivity(intent);

}

但我有一个问题。当我按下后退按钮onPause正在调用并开始新的活动。我想onPause总是有效,除非我点击手机上的后退按钮。我怎么能这样做?我认为这可能是if(backbutton was click){onPause is not working}else{onPause working},但我不知道如何实施此解决方案。或许你有更好的想法?

3 个答案:

答案 0 :(得分:2)

@ user1302569

您可以按照以下步骤在应用程序中实现您的愿望行为。

步骤1:在您的Activty中覆盖此返回Key方法。

@Override
  public void onBackPressed() {
             //Here you get Back Key Press So make boolean false
             no_back_key=false;
             super.onBackPressed();
} 

第2步:在Activity Class中获取如下所示的一个布尔变量。

 public boolean no_back_key=true;

第3步:在你的OnPause方法中做一些像下面的事情

           @Override
           protected void onPause() {
           super.onPause();
           Intent intent;
           //Only this boolean will become false when we get Back Key Press as you Said in Your   Question
           if(no_back_key){
           intent = new Intent(Games.this, PauseScreen.class);
           startActivity(intent);
    }

第4步:在你的活动的OnResume中确保这一点。

    @Override
    protected void onResume() {
    no_back_key=true;
    super.onResume();
}

}

关于Android中的返回键事件,在开发者网站中,您可以参考此http://android-developers.blogspot.in/2009/12/back-and-other-hard-keys-three-stories.html

答案 1 :(得分:0)

尝试覆盖onBackPressed()在其中设置标记并在onPause()

中检查该标记

(虽然从onPause开始另一项活动很奇怪,但也许你有充分的理由这样做我不能想到这样的场景......)

答案 2 :(得分:-1)

实施以下方法 -

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
             //Do something (OR NOTHING)
    }
    return true;
}

请记住返回true,因为这意味着,您已按后退按键处理,系统无需处理。

这是onBackPressed()的良好替代品,可能适用于您,也可能不适合您。