自从从appcompat库的23.1.0升级到23.1.1后,在setCustomView()
上调用TabLayout.Tab
会引发NullPointerException
。
例如
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修复了我在该版本中遇到的另一个问题。
我所做的事情是否有问题,或者这是支持库中的问题?
答案 0 :(得分:4)
在设置自定义视图之前将选项卡添加到布局可避免崩溃。例如:
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));
答案 1 :(得分:-1)
Plz将com.android.support:appcompat-v7更新为23.1.1。
因为' com.android.support:design:23.1.1和com.android.support:appcompat-v7:23.1.1调整包结构。您应该使用相同的版本。