在我的 NavigationView 中,我有一个带有活动按钮的 id ‘viewId’ 的标题布局。要设置这些按钮,我在活动中执行以下操作onPostCreate:
onPostCreate
final View panel = findViewById(R.id.viewId); panel.setOnClickListener(new View.OnClickListener() { ... setup goes here ... });
使用新版本的 android 支持库 ( 23.1.0 ),无法找到视图,它返回 null。使用以前的版本,它运行良好。是错误还是我使用此功能错误?如果是这样,如何访问标题布局并向其添加行为?
版本 23.1.0 切换NavigationView到使用 a RecyclerView(而不是以前的ListView),并且标头被添加为这些元素之一。这意味着它不能立即调用findViewById()- 在将其附加到NavigationView.
NavigationView
RecyclerView
ListView
findViewById()
对于支持库的23.1.1 版,您现在可以使用以下方式获取对标题视图的引用getHeaderView():
getHeaderView()
View headerLayout = navigationView.getHeaderView(0); // 0-index header
这具有处理通过 XML 和代码添加的标头的优势。
如果您仍在使用 23.1.0,根据相关的错误,您可以在代码中扩充标题并使用findViewById()它:
View headerLayout = navigationView.inflateHeaderView(R.layout.navigation_header); panel = headerLayout.findViewById(R.id.viewId); // panel won't be null
直到您移至 23.1.1。