Android中ViewPager调用findViewById返回NULL问题求助
排查ViewPager findViewById返回Null的常见原因
确认布局加载顺序
必须在setContentView(R.layout.你的目标布局)之后调用findViewById(R.id.viewPagerMain)。如果在布局未加载前执行查找,控件必然为null,比如onCreate方法里要先执行布局加载,再初始化ViewPager。核对ID的一致性
检查XML布局中ViewPager的android:id="@+id/viewPagerMain"和代码中R.id.viewPagerMain的拼写、大小写完全一致,不要有空格、错别字这类低级错误。排查布局嵌套或Fragment场景
如果ViewPager在Fragment的布局里,要使用getView().findViewById()而非Activity的findViewById;如果ViewPager嵌套在多层布局容器中,确认没有在错误的父容器范围内查找控件。检查布局文件是否加载正确
确认setContentView方法中传入的是包含ViewPager的布局ID,别不小心加载了其他不含该控件的布局。验证ViewPager类的导入与标签匹配
代码中导入的ViewPager类要和XML标签对应:- 用AndroidX的话,代码导入
androidx.viewpager.widget.ViewPager,XML标签写<androidx.viewpager.widget.ViewPager> - 用旧支持库的话,代码导入
android.support.v4.view.ViewPager,XML标签写<android.support.v4.view.ViewPager>
类和标签不匹配会导致查找失败。
- 用AndroidX的话,代码导入
清理重建项目
有时候R文件缓存会出问题,执行Build -> Clean Project,再Build -> Rebuild Project,之后重新运行项目。
内容的提问来源于stack exchange,提问作者Developer_wanna_be
相关产品推荐
相关产品推荐

