Android appcompt库23.1.1:TabLayout.Tab.setCustomView()NullPointerException

时间:2015-11-19 04:57:35

标签: android android-support-library android-appcompat

自从从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修复了我在该版本中遇到的另一个问题。

我所做的事情是否有问题,或者这是支持库中的问题?

2 个答案:

答案 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调整包结构。您应该使用相同的版本。