android - 这个 R.id.home 是什么?
问题描述
一个子活动工具栏的多个父活动后退按钮
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
我必须为后退按钮的功能覆盖此函数,回调到调用子项的同一父活动,但我不明白以下代码行:
id == android.R.id.home
什么是R.id.home
?home
代表?R.id.home
我是否必须在任何地方都使用相同的,我必须在我的应用程序中使用这个后退按钮功能?
解决方案
您可能习惯于R.id.whatever
引用您为应用程序中的视图提供的 ID。给一个TextView
ID label
,然后你可以通过寻找R.id.label
它的 ID 的视图来找到它,诸如此类。
该R
文件是根据您添加或声明的资源为您的应用程序生成的。但是android.R.id.home
是Android R
文件中的一个ID——你可以把它想象成一组独立的系统资源。它不会与您提供“家庭”ID 的任何东西冲突,因为那会是R.id.home
相反的。
当您setHomeButtonEnabled
在工具栏上调用时,Android 会添加自己的图标,并为其提供一个内部 ID 为android.R.id.home
. 这始终是该主页按钮的标识符,您可以通过在选择菜单项时检查该 ID 来检查它是否被按下。
推荐阅读
- python - Xpath 查询试图从网站表中提取值
- html - 如何在 Outlook 正文中左对齐从 Excel 范围创建的 HTML 表格?
- github - 如何通过 github 中的拉取请求共享加密的秘密?
- c++ - 与 ## 运算符一起使用时,编译器无法识别 Defined() 运算符
- excel - 将引用的 URL 连接到 XML HTTP 请求中
- php - 如何让 GROUP_CONCAT 数据分开显示
- laravel - 当 url 段大于 1 时,Laravel 中间件不能与路由组一起使用
- haskell - 将列表拆分为固定大小的块
- c++ - 混合指针和非指针对象时对象的初始化顺序是什么?
- c++ - clang 静态分析器使用 unique_ptr 报告内存泄漏。假阳性?