从appcompat库的23.1.0升级到23.1.1之后,在asetCustomView()
上调用TabLayout.Tab
将抛出aNullPointerException
。
如
TabLayout.Tab tab = mTabLayout.newTab();
tab.setCustomView(R.layout.tab_photo_indicator);
mTabLayout.addTab(tab);
在第二行抛出
NullPointerException
。异常指向appcompat库中的TabLayout.java:1019
,下面的inflater =
行:public Tab setCustomView(int resId) {
final TabView tabView = mParent.getTabView(mPosition);
final LayoutInflater inflater = LayoutInflater.from(tabView.getContext());
return setCustomView(inflater.inflate(resId, tabView, false);
}
降级到23.1.0使它再次工作,但23.1.1修复了我在该版本中遇到的另一个问题。
我所做的有什么问题吗?或者这是支持库中的问题吗?
最佳答案
在设置自定义视图之前将选项卡添加到布局可避免崩溃。如:
TabLayout.Tab tab = mTabLayout.newTab();
mTabLayout.addTab(tab);
tab.setCustomView(R.layout.tab_photo_indicator);
不幸的是,布局没有像以前那样显示,但我可以修改布局以适应。
此问题还排除了将选项卡创建为一行并添加为一行的可能性。如:
mTabLayout.addTab(mTabLayout.newTab().setCustomView(r.layout.tab_photo_indicator));