最新消息:

android升级support library 23.1.0后,NavigationView findViewById找不到header,报NullPointerException

android 大步 2557浏览 0评论
升级了下android的支持库support library23.1.0,结果运行以前的项目,发现好几个报错。这里先说下 support library 23.1.0后,NavigationView findViewById找不到header,这样就找不到头像,导致报NullPointerException空指针异常
 
https://code.google.com/p/android/issues/detail?id=190226
 
 
解决办法如下:

第一种方法:

假设原先的布局是:
mainactivity.xml:

 

将其中  app:headerLayout="@layout/navigation_header"   这一行删除。

 
然后去MainActivity.java :
以前是可以直接findById()来引用navigation_header.xml ,但是更新到23.1.0+以后了,就不能这样了。
 
findById()改为:

  1.  
这样,再通过:
来指向头像的ImageView。
这样就不会报NullPointerException空指针异常的错误了

第二种方法:(适合support library 23.1.1)

因为是升级support library 23.1.0, 自然support material design也变成了23.1.0,而这个bug是design 23.1.0版本才有的,而官方已经发布了新到support library 23.1.1,所以,design 23.1.1 里加了一个新的方法:
  1. getHeaderView(int index)
我们可以使用新的方法来引用NavigationVIew中navigation_header设置的头像。
假设原先的布局是:

mainactivity.xml:


 

这里我们不需要删除  app:headerLayout="@layout/navigation_header"这一行。
直接将findById()改为:

  1.  
其中0表示对navigation_header.xml的索引。
这样,再通过:

 

来指向头像的ImageView。
这样就不会报NullPointerException空指针异常的错误了

第三种:(适合support library 23.1.0 

 

这个方法我没有试过。
============完===============

 

来自为知笔记(Wiz)

 

转载请注明:大步's Blog » android升级support library 23.1.0后,NavigationView findViewById找不到header,报NullPointerException

SiteMap