onBackPressed()不起作用

时间:2011-07-03 20:51:58

标签: android button back

我正试图通过单击后退按钮关闭我的应用程序。从主屏幕,后退按钮将带您进入学分屏幕。从那个学分屏幕,我想用后退按钮关闭应用程序。不幸的是,我正在调用的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;
}

}

5 个答案:

答案 0 :(得分:3)

我不明白。 <{1}} 调用onBackPressed()的内容。 finish()finish()方法,没有办法“退出”您的应用,可以这么说。也许您真正想要的是在启动Activity活动的活动上调用finish()。在其他活动中:

Credits

答案 1 :(得分:1)

尝试以下解决方案?

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

答案 2 :(得分:1)

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

Snapshot of which directory to delete

我不知道怎么样但是Android Studio似乎在生成构建时出错并导致了这个问题。因此,在删除build目录后,我的onBackpressed()方法被调用。

答案 3 :(得分:0)

对不起,我还没有评论(我希望这是对Muffinbubble答案的评论)..

尝试将onKeyDown放入主类中,并验证即使您处于第二个Activity中,也会调用此方法。 然后,您可以通过主类检查您的位置,并在需要时退出应用程序,否则返回super.onKeyDown(..)。

答案 4 :(得分:0)

我不知道你是否找到了答案,但是你是否已经从最重要的方法中尝试了super.onBackPressed?

如果我是你,我会尝试:

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