android - 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() 方法,并且会出现窗口泄漏,因为警报对话框可见并且活动被终止。
如何停止这个问题?
注意:当我们不在清单文件中提供父活动时,不会发生这种情况!
解决方案
当您处理新闻时(在您的情况下) ,您应该返回true
。onOptionsItemSelected
if
现在,您正在super.onOptionsItemSelected(item)
无条件地拨打电话,这会在后按时触发活动完成。
推荐阅读
- java - 难以使用 Selenium 和 Java 处理新打开的选项卡
- swift - 我的搜索栏没有在我的表格视图中显示搜索到的内容
- javascript - 表单验证电话号码输入
- php - 正则表达式匹配列表中的字符,除非存在另一个列表的字符
- javascript - 使用无状态 React 在异步函数中设置状态
- azure - Cosmos DB 将属性从 PascalCase 转换为 CamelCase
- wordpress - 如何创建可在 Internet 访问可用时上传的离线表单?
- firebase - 如果链接未注册,Firebase 动态链接默认行为
- c++ - Visual Studio 2019 编译构建
- sql - 使用 case 语句 SQL 的单个查询中的多个计数