这是什么R.id.home?
What is this R.id.home?
多个 parent 一个活动 child activity 工具栏后退按钮
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
为了后退按钮的功能,我必须覆盖此函数,回调到调用 child 的同一个 parent activity,但我不明白这行代码:
id == android.R.id.home
什么是R.id.home
? home
代表什么?我是否必须在任何地方使用相同的 R.id.home
,我必须在我的应用程序中使用此后退按钮功能?
R
是从 Android 资源包中获取东西的方法。 id
告诉它你想要一个 id
(你也可以向它请求其他东西,比如 string
s)。
home
是您要求的实际 ID。根据您的问题判断,这可能是一个按钮。 ID 在视图编辑器中设置。
如果您搜索应用程序,您可能会找到 ID 为 home
的按钮。
一个非常简短的答案是:一种访问资源的方式。
资源可以是 TextView
、Button
以及一些 Strings
、Drawable
图片。
R.id.home
表示某些特定资源,即 MentuItem
,因此代码通过这种方式确定是否选择了 MenuItem
- 中可能有多个 MenuItem
Menu
因此,代码会找出是否选择了带有 id
=home
的 MenuItem
。
你的 Menu
HTML 文件中应该有这样的东西:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/home"
android:title="BlaBlaBla"
/>
...
重要提示:每个资源必须有不同的标识符(id)以避免访问不明确。
在这里您可以找到有关 R
的详细信息以及解释的用例。 Here
您可能习惯于使用 R.id.whatever
来引用您为应用中的视图提供的 ID。给一个 TextView
一个 ID label
,然后你可以通过查找 ID 为 R.id.label
的视图来找到它,那种东西。
该 R
文件是根据您添加或声明的资源为您的应用程序生成的。但是 android.R.id.home
是 Android 的 R
文件中的一个 ID - 你可以把它想象成一组单独的系统资源。它不会与您为其提供“家庭”ID 的任何内容发生冲突,因为那将是 R.id.home
。
当您在工具栏上调用 setHomeButtonEnabled
时,Android 会添加自己的图标,并为其提供 android.R.id.home
的内部 ID。这始终是该主页按钮的标识符,您可以通过在选择菜单项时检查该 ID 来检查它是否被按下。
多个 parent 一个活动 child activity 工具栏后退按钮
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
为了后退按钮的功能,我必须覆盖此函数,回调到调用 child 的同一个 parent activity,但我不明白这行代码:
id == android.R.id.home
什么是R.id.home
? home
代表什么?我是否必须在任何地方使用相同的 R.id.home
,我必须在我的应用程序中使用此后退按钮功能?
R
是从 Android 资源包中获取东西的方法。 id
告诉它你想要一个 id
(你也可以向它请求其他东西,比如 string
s)。
home
是您要求的实际 ID。根据您的问题判断,这可能是一个按钮。 ID 在视图编辑器中设置。
如果您搜索应用程序,您可能会找到 ID 为 home
的按钮。
一个非常简短的答案是:一种访问资源的方式。
资源可以是 TextView
、Button
以及一些 Strings
、Drawable
图片。
R.id.home
表示某些特定资源,即 MentuItem
,因此代码通过这种方式确定是否选择了 MenuItem
- 中可能有多个 MenuItem
Menu
因此,代码会找出是否选择了带有 id
=home
的 MenuItem
。
你的 Menu
HTML 文件中应该有这样的东西:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/home"
android:title="BlaBlaBla"
/>
...
重要提示:每个资源必须有不同的标识符(id)以避免访问不明确。
在这里您可以找到有关 R
的详细信息以及解释的用例。 Here
您可能习惯于使用 R.id.whatever
来引用您为应用中的视图提供的 ID。给一个 TextView
一个 ID label
,然后你可以通过查找 ID 为 R.id.label
的视图来找到它,那种东西。
该 R
文件是根据您添加或声明的资源为您的应用程序生成的。但是 android.R.id.home
是 Android 的 R
文件中的一个 ID - 你可以把它想象成一组单独的系统资源。它不会与您为其提供“家庭”ID 的任何内容发生冲突,因为那将是 R.id.home
。
当您在工具栏上调用 setHomeButtonEnabled
时,Android 会添加自己的图标,并为其提供 android.R.id.home
的内部 ID。这始终是该主页按钮的标识符,您可以通过在选择菜单项时检查该 ID 来检查它是否被按下。