Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android后退按钮代码从未执行过_Android - Fatal编程技术网

Android后退按钮代码从未执行过

Android后退按钮代码从未执行过,android,Android,我的活动中有以下代码。我为所有这些方法设置了断点。当我按下菜单按钮时,它进入onKeyDown和onKeyUp。当我按下后退按钮时,应用程序关闭,手机返回主屏幕,而不通过任何断点 编辑: 根据大多数来源,这可能会起作用: @Override public void onBackPressed() { SwitchToMenuState(); } 然而,事实并非如此。我尝试了以下代码块的所有排列,但没有一个被调用: @Override public void finish() {

我的活动中有以下代码。我为所有这些方法设置了断点。当我按下菜单按钮时,它进入onKeyDown和onKeyUp。当我按下后退按钮时,应用程序关闭,手机返回主屏幕,而不通过任何断点

编辑: 根据大多数来源,这可能会起作用:

@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(………),这可能会有所帮助