我有onPause在活动中,并且工作得很好。这是代码
@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},但我不知道如何实现这个解决方案。或者你有更好的主意?
发布于 2012-03-30 18:59:45
@user1302569
以下是您可以在应用程序中实现所需行为的步骤。
步骤1:在你的活动中重写这个back键方法。
@Override
public void onBackPressed() {
//Here you get Back Key Press So make boolean false
no_back_key=false;
super.onBackPressed();
} 第2步:在您的Activity类中获取一个如下所示的布尔变量。
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);
}第四步:在你的活动的OnResume中,也要确保这一点。
@Override
protected void onResume() {
no_back_key=true;
super.onResume();
}}
关于安卓系统中的后退键事件,在开发者网站上你可以参考这个http://android-developers.blogspot.in/2009/12/back-and-other-hard-keys-three-stories.html
发布于 2012-03-30 18:59:07
尝试覆盖在其中设置标志的onBackPressed(),并在onPause()中检查该标志
(虽然从onPause启动另一个活动很奇怪,但也许您有很好的理由这样做,我想不出这样的情况……)
发布于 2012-03-30 18:40:50
实现以下方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//Do something (OR NOTHING)
}
return true;
}记住返回true,因为它意味着你已经处理了back键的按下,而系统不需要处理它。
这是onBackPressed()的一个很好的替代品,它可能会也可能不会对你起作用。
https://stackoverflow.com/questions/9941350
复制相似问题