【发布时间】:2015-02-27 16:04:24
【问题描述】:
我正在使用 AppCompat 并尝试为属于工具栏的向上/后退按钮调用 ImageView。
我知道R.android.id.home 存在,因为我可以将其单击作为菜单项进行管理:
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
//this works
}
return super.onOptionsItemSelected(item);
}
除此之外,每当我尝试调用findViewById(android.R.id.home) - 无论是onCreate,还是自定义按钮的onClick - 我都会得到null。
如果在上面的示例中调用 findViewById(item.getItemId()),我什至会得到 null。
为什么会这样? 这个问题在此之前已经被问过,大多数时候是关于 ActionBarSherlock (我没有使用)。 Another time 建议使用:
getWindow().getDecorView().findViewById(android.R.id.home)
但它不起作用。在那个问题中,OP 还说 findViewById(android.R.id.home) 适用于 API>3.0,但对我来说不是这样。有什么想法吗?
【问题讨论】:
-
“我知道 R.android.id.home 存在,因为我可以将其单击作为菜单项进行管理”——这是一个菜单 ID。它不一定是小部件 ID。
-
@Commons 所以没有办法找到相关视图?由于链接的问题,我希望如此。
-
我不知道。您找到的任何解决方案本质上都是不可靠的,因为它不是您的小部件。它是操作栏实现的小部件。操作栏可以随意命名,使用它想要的任何
View类(甚至直接将其呈现给Canvas)等等。不要假设或试图控制其他人UI 的内部实现。 -
@Commons 好的,我放弃了。如果你发布它,我会接受这个答案。 [强相关:也许你可以帮助我here。唯一的答案对我来说似乎不太好 - 真的必须制作自己的向上按钮来设置样式吗?]
标签: android android-navigation