首页 > 解决方案 > Android:后退按钮的覆盖在库中不起作用

问题描述

我有一个带有覆盖后退按钮方法的活动

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    Log.d(TAG, "onOptionsItemSelected");
    if (item.getItemId() == android.R.id.home)
        onBackPressed();
    Log.d(TAG, "onOptionsItemSelected: if executed");
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    closeDialog();
}

在硬件按下后退按钮时向用户显示警报对话框效果很好。当用户授予权限时,活动就完成了。但是当用户单击工具栏中的后退箭头时,会显示对话框,但会调用活动 onPause()、onStop() 方法,并且会出现窗口泄漏,因为警报对话框可见并且活动被终止。

如何停止这个问题?

注意:当我们不在清单文件中提供父活动时,不会发生这种情况!

标签: androidandroid-manifestback-button-control

解决方案


当您处理新闻时(在您的情况下) ,您应该返回trueonOptionsItemSelectedif

现在,您正在super.onOptionsItemSelected(item)无条件地拨打电话,这会在后按时触发活动完成。


推荐阅读