Android后退按钮代码从未执行过
我的活动中有以下代码。我为所有这些方法设置了断点。当我按下菜单按钮时,它进入onKeyDown和onKeyUp。当我按下后退按钮时,应用程序关闭,手机返回主屏幕,而不通过任何断点 编辑: 根据大多数来源,这可能会起作用:Android后退按钮代码从未执行过,android,Android,我的活动中有以下代码。我为所有这些方法设置了断点。当我按下菜单按钮时,它进入onKeyDown和onKeyUp。当我按下后退按钮时,应用程序关闭,手机返回主屏幕,而不通过任何断点 编辑: 根据大多数来源,这可能会起作用: @Override public void onBackPressed() { SwitchToMenuState(); } 然而,事实并非如此。我尝试了以下代码块的所有排列,但没有一个被调用: @Override public void finish() {
@Override
public void onBackPressed() {
SwitchToMenuState();
}
然而,事实并非如此。我尝试了以下代码块的所有排列,但没有一个被调用:
@Override
public void finish()
{
SwitchToMenuState();
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
SwitchToMenuState();
}
return true;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
SwitchToMenuState();
}
return true;
}
我使用的是Android 2.3和处理,尽管它似乎与处理毫无关系。Eclipse告诉我,我正在覆盖android.app.Activity.onBackPressed。当您按back时,如果在此活动之前没有活动,您的应用程序将关闭。您可以开始使用:startActivity(intent) 使用 安卓1.x中的onKeyDown 安卓2.x中的onBackPressed
并且只使用其中一个,而不是两个
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//Your code here
return true;
}
return super.onKeyDown(keyCode, event);
}
我想这是因为你没有返回超级部分。这对我很有用,你不需要onbackpressed或onkeyup等功能。我不确定我是否完全理解你的意思。我的“main”类扩展了Activity,这就是代码所在的位置(适用于除back之外的所有其他按钮)。您运行此操作的Android版本是什么?很可能确实调用了onBackPressed(),但您的SwitchToMenuState()方法有问题。也许你有一些不正确的情况在那里检查或什么的。介意发布吗?我在方法上有一个断点,所以它不会被调用(因为当按下其他按钮时,其他方法上的断点确实有效)。我试着把Log.d(“myTag”,“OnBackPressed registed”);在onBackPressed方法中,运气不好。我已经单独尝试了两种方法。我在安卓2.3上。代码永远不会进入onBackPressed方法。Eclipse确认我正在从android.app.Activity.onBackPressed.com重写onBackPressed,除非您将super.onBackPressed()添加到它应该运行的方法的顶部。确保onKeyDown方法存根不在那里,因为即使这样也会阻止对onBackPressed的调用,除非调用super.onKeyDown(………),这可能会有所帮助