Android:覆盖后退按钮在库中不起作用

Android: Override of Back button not working in Library

我有一个 activity 具有覆盖后退按钮方法

 @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();
}

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

如何解决这个问题?

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

当你处理媒体时(在你的 if 案例中),你应该从 onOptionsItemSelected return true

现在您正在无条件地呼叫 super.onOptionsItemSelected(item),这会触发 activity 完成按回键。