Android onBackPressed()不工作

Android onBackPressed()不工作,android,button,back,Android,Button,Back,我正在尝试单击“后退”按钮关闭我的应用程序。从主屏幕,后退按钮将带您进入信用屏幕。在这个屏幕上,我想用后退按钮关闭应用程序。不幸的是,我调用的onBackPressed方法似乎根本没有执行。我不知道如何进行 package app.jonward.boss; import android.app.Activity; public class Credits extends Activity{ @Override public void onCreate(Bundle savedInstan

我正在尝试单击“后退”按钮关闭我的应用程序。从主屏幕,后退按钮将带您进入信用屏幕。在这个屏幕上,我想用后退按钮关闭应用程序。不幸的是,我调用的onBackPressed方法似乎根本没有执行。我不知道如何进行

package app.jonward.boss;
import android.app.Activity;


public class Credits extends Activity{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.credits);

    //Doing stuff
}


@Override
public void onBackPressed() {
   finish();
   return;
}

}

尝试以下解决方案

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

尝试以下解决方案

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
我不明白。onBackPressed所做的是调用finish。finish是一种活动方法,可以说,无法退出应用程序。也许您真正想要的是对正在开始Credits活动的活动调用finish。在其他活动中:

   finish();
   startActivity(this, Credits.class);
我不明白。onBackPressed所做的是调用finish。finish是一种活动方法,可以说,无法退出应用程序。也许您真正想要的是对正在开始Credits活动的活动调用finish。在其他活动中:

   finish();
   startActivity(this, Credits.class);

很抱歉,我无法发表评论,但我希望这是对Muffinbobble答案的评论

尝试将onKeyDown放入main类中,并验证是否调用了此get,即使您正在进行第二个活动。
然后,您可以通过主类检查您的位置,如果需要,退出应用程序,否则返回super.onKeyDown…

对不起,我无法发表评论,但我希望这是对Muffinbubble答案的评论

尝试将onKeyDown放入main类中,并验证是否调用了此get,即使您正在进行第二个活动。
然后,您可以通过主类检查您的位置,并在需要时退出应用程序,否则返回super.onKeyDown…

我不知道您是否找到了答案,但您是否尝试过覆盖方法中的super.onbackpress

如果我是你,我会尝试:

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}

我不知道您是否已经找到了答案,但是您是否已经尝试了覆盖方法中的super.onBackPressed

如果我是你,我会尝试:

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}

就在最近,我遇到了这个问题,我能够通过删除build目录中的所有文件夹来解决它


我不知道是怎么回事,但Android Studio似乎在生成构建时出错,导致了这个问题。因此,在删除构建目录后,调用了myonBackpressed方法。

就在最近,我遇到了这个问题,我能够通过删除构建目录中的所有文件夹来解决它


我不知道是怎么回事,但Android Studio似乎在生成构建时出错,导致了这个问题。因此,在删除构建目录后,调用了myonBackpressed方法。

我也尝试过,但什么也没有发生。我没有错误,没有警告,没有任何东西会告诉我我遗漏了一个include或任何东西。只是,什么都没发生。我需要在某个地方添加OnClick侦听器吗?它不需要。您是否尝试过用简单的日志消息或Toast消息替换finish以查看它是否被调用,以防finish出现问题?是的,我在其中放置了Toast消息,但它也不起作用。代码没有被执行,我也不明白为什么:/FWIW,这个代码片段实际上没有做任何事情,因为super.onKeyDown无论如何都会这么做-调用finish。如果我错了,有人纠正我。好吧,那么。。。当我想用“后退”按钮关闭程序时,我该怎么办?我不在乎进程是否终止;我知道android并不是这样处理进程的。我只想让我的程序消失,主屏幕恢复。我也试过了,但什么也没发生。我没有错误,没有警告,没有任何东西会告诉我我遗漏了一个include或任何东西。只是,什么都没发生。我需要在某个地方添加OnClick侦听器吗?它不需要。您是否尝试过用简单的日志消息或Toast消息替换finish以查看它是否被调用,以防finish出现问题?是的,我在其中放置了Toast消息,但它也不起作用。代码没有被执行,我也不明白为什么:/FWIW,这个代码片段实际上没有做任何事情,因为super.onKeyDown无论如何都会这么做-调用finish。如果我错了,有人纠正我。好吧,那么。。。当我想用“后退”按钮关闭程序时,我该怎么办?我不在乎进程是否终止;我知道android并不是这样处理进程的。我只希望我的程序消失,主屏幕恢复。你有没有可能实现onKeyDown或onkeydup?他们是否未能调用super.onKeyDown/onkeydup?它们是真的吗?您的应用程序中是否有实现onKeyDown/onkeydup并返回true作为back键的小部件?任何这些事情都可能阻止back键到达onBackPressed方法。在这段代码中唯一发生的事情就是绘制一些文本视图。就这样。但是当按下后退按钮时,onBackPressed不会被执行。最后一个想法是:onBackP

ressed是2.0中的新功能。在1.x系统上,它永远不会被调用。你找到解决方案了吗?我的一项活动中也只有一项有类似的问题。您是否有机会实现onKeyDown或onKeyUp?他们是否未能调用super.onKeyDown/onkeydup?它们是真的吗?您的应用程序中是否有实现onKeyDown/onkeydup并返回true作为back键的小部件?任何这些事情都可能阻止back键到达onBackPressed方法。在这段代码中唯一发生的事情就是绘制一些文本视图。就这样。但是当按下后退按钮时,onBackPressed不会被执行。最后一个想法是:onBackPressed在2.0中是新的。在1.x系统上,它永远不会被调用。你找到解决方案了吗?我的一项活动也有类似的问题,我想你不明白我想做什么。我想用手机上的后退按钮离开信用卡屏幕,退出应用程序。是的,我知道Android应用程序不会真正终止。此时的问题是,当按下后退按钮时,onBackPressed没有被执行。没有任何变化。这项活动显示了它的本意。可通过按标题屏幕上的“后退”来访问。我想再次按“后退”退出应用程序,但默认情况下不会这样做。然后我不知道,您的活动堆栈似乎出了问题,但我看不到您共享的代码片段有任何问题,抱歉。我同意上述说法。返回按钮作为默认行为将关闭活动,但据我所知,您希望覆盖此功能。在我的示例中,您使用的两个代码语句和我的答案都非常有效。如上所述,您的活动堆栈出现了问题,或者我不想说,很明显,按错了键。我想您不明白我在做什么。我想用手机上的后退按钮离开信用卡屏幕,退出应用程序。是的,我知道Android应用程序不会真正终止。此时的问题是,当按下后退按钮时,onBackPressed没有被执行。没有任何变化。这项活动显示了它的本意。可通过按标题屏幕上的“后退”来访问。我想再次按“后退”退出应用程序,但默认情况下不会这样做。然后我不知道,您的活动堆栈似乎出了问题,但我看不到您共享的代码片段有任何问题,抱歉。我同意上述说法。返回按钮作为默认行为将关闭活动,但据我所知,您希望覆盖此功能。在我的示例中,您使用的两个代码语句和我的答案都非常有效。如上所述,您的活动堆栈出现了一些问题,或者我不想说很明显,按下了错误的键。要点:如果有疑问,请在代码日志中散布一些printf。d。。。在这种情况下。很好的一点:如果有疑问,请在代码日志中分散一些printf。d。。。在这种情况下,很奇怪,但这对我有效。谢谢你的发现+1奇怪,但这对我有用。谢谢你的发现+1.