2017-01-10 74 views
1

如何解决如何解决方法调用“的setIcon”可能会产生“显示java.lang.NullPointerException”

方法调用setIcon可能产生java.lang.NullPointerException

private void setupTabIcons() { 
    tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
    tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
    tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
} 

设置图标标签布局时,我得到这个消息。

+0

欢迎来到Stack Overflow!为了给你一个很好的答案,如果你有一个[问],如果你还没有看过,它可能会帮助我们。如果你可以提供[mcve],它可能也很有用。 – Mat

+0

在这个例子中,这可能意味着此时'tabLayout'变量为空。请提供更多代码以显示它应初始化的位置。 –

+0

@SimonBaars它的变量是'null',那么他的IDE会抱怨'getTabAt',而不是'setIcon'。 – Tom

回答

0

像这样的东西应该解决您的警告:

private void setupTabIcons() { 
    if (tabLayout!=null){ 
     if (tabLayout.getTabAt(0)!=null) 
     tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
     if (tabLayout.getTabAt(1)!=null) 
     tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
     if (tabLayout.getTabAt(2)!=null) 
     tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
    } 
} 
+0

虽然这解决了它,但这不是一个干净的解决方案。我假设这是Android TabLayout。 'getTabCount'可用,所以你可以只检查一次标签的数量。 –

1

您需要检查tabLayout不为空

if(tabLayout == null){ 
    return; 
} 

而且还要检查,无论getTabAt回报不为空

ActionBar.Tab x = tabLayout.getTabAt(0); 
if(x != null){ 
    x.setIcon(tabIcons[0]); 
} 

顺便说一句,你可能在你的IDE中有一些错误的配置这通常是一个警告,而不是一个错误。

相关问题