我在活动中有暂停,效果很好。这是代码
@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}
,但我不知道如何实施此解决方案。或许你有更好的想法?
答案 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()
的良好替代品,可能适用于您,也可能不适合您。