android - 为什么 Activity 的 onBackPressed 没有被调用?

标签 android android-fragments onbackpressed fragmentmanager

我正在覆盖 Activity 中的 onBackPressed 方法:

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

我正在按如下方式添加 fragment :

    fragmentManager.beginTransaction()
                .add(R.id.frame_container, myFragment).addToBackStack("").commit();

问题是我的 onBackPressed 没有在 Activity 中被调用。 但是当我把它改成:

replace(R.id.frame_container, myFragment).addToBackStack("").commit();

它按预期被调用。 我必须添加 fragment 。如何解决这个问题?

最佳答案

@Override
public boolean onKeyUp(int keyCode, KeyEvent objEvent) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        onBackPressed();
        return true;
    }
    return super.onKeyUp(keyCode, objEvent);
}

@Override
public void onBackPressed() {

    goBack();
}

public void goBack() {

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
            MyCaseActivity.this);

    alertDialog.setTitle("");
    alertDialog.setMessage("Are you sure you want to exit?");

    alertDialog.setPositiveButton("YES",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                    System.exit(0);
                }
            });

    alertDialog.setNegativeButton("NO",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });

    alertDialog.show();
}

这对我有用。

关于android - 为什么 Activity 的 onBackPressed 没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668015/

相关文章:

android - 如何从另一个 Activity onBackPressed()

javascript - Cordova Ajax 请求永远挂起

android - 使用 fragment 的动态方式

android - ApiDemos 示例中 FragmentLayout 类中的奇怪 FragmentTransaction

android - Mediaplayer 使应用程序崩溃 onBackPressed

android - 单击后退按钮两次以使用 rxjava 退出 Activity

android - OSM - 使用自定义图标显示当前位置

java - 我是否需要单独的 eclipse 项目来使用 PC 代理为 Android 开发

android - 图像目标 Vufroria 示例

android getSupportActionBar() 在 fragment 中返回 null