Android 这是什么R.id.家?

Android 这是什么R.id.家?,android,back-button,Android,Back Button,一个子活动的多个父活动工具栏后退按钮 @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(i

一个子活动的多个父活动工具栏后退按钮

@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
<代码>主页代表什么?我是否必须在任何地方使用相同的
R.id.home
,我必须在我的应用程序中使用此后退按钮功能?

R
是从Android资源包获取内容的方法
id
告诉它你想从它那里得到一个
id
(你也可以向它索要其他东西,比如
string
s)

home
是您请求的实际ID。根据你的问题判断,这可能是一个按钮。ID在视图编辑器中设置


如果您对应用程序进行搜索,您可能会找到一个ID为“主页”的按钮。一个非常简短的答案是:一种访问资源的方法
资源可以是
文本视图
按钮
,也可以是一些
字符串
可绘制的图像

R.id.home
表示某个特定的资源,它是
MentuItem
,因此代码通过这种方式确定是否选择了
MenuItem
-在
菜单中可能有多个
MenuItem
,代码将确定是否选择了id为的
MenuItem
=
home

菜单
HTML文件中应该有如下内容:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/home"        
    android:title="BlaBlaBla"
/>
...

...
重要提示:每个资源必须具有不同的标识符(id),以避免访问不明确


在这里,您可以找到有关
R
的详细信息以及解释过的用例

您可能已经习惯使用
R.id.whatever
来引用您为应用程序中的视图提供的id。给一个
TextView
一个
label
的ID,然后你可以通过查找视图来找到它,该视图的ID是
R.ID.label
,诸如此类

R
文件是根据您添加或声明的资源为您的应用程序生成的。但是
android.R.id.home
android的
R
文件中的一个id-您可以将其视为一组单独的系统资源。它不会与您提供的任何“home”ID冲突,因为这将是
R.ID.home


当您在工具栏上调用
setHomeButtonEnabled
时,Android会添加自己的图标,并给它一个内部ID
Android.R.ID.home
。这始终是home(主页)按钮的标识符,您可以在选择菜单项时通过检查该ID来检查是否按下了该按钮。

详细说明!这解决了我的困惑。谢谢@cactustictacs