首页 > 解决方案 > 这个 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.homehome代表?R.id.home我是否必须在任何地方都使用相同的,我必须在我的应用程序中使用这个后退按钮功能?

标签: androidback-button

解决方案


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

R文件是根据您添加或声明的资源为您的应用程序生成的。但是android.R.id.homeAndroid R文件中的一个ID——你可以把它想象成一组独立的系统资源。它不会与您提供“家庭”ID 的任何东西冲突,因为那会是R.id.home相反的。

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


推荐阅读