2017-01-10 11 views
1

を生成することがどのようにメソッドの呼び出しを修正する修正する方法は「setIconは」「java.lang.NullPointerExceptionが」

メソッド呼び出しsetIconjava.lang.NullPointerExceptionを生成できますか?

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

タブレイアウトにアイコンを設定するとき、私はこのメッセージを取得しています。このような

+0

ようこそスタックオーバーフロー!あなたに素晴らしい答えを与えるために、もしあなたがまだ持っていなければ、あなたが[尋ねる]を一目で把握すれば、私たちを助けるかもしれません。あなたが[mcve]を提供できるなら、それは役に立つかもしれません。 – Mat

+0

この例では、おそらく、 'tabLayout'変数が現時点ではnullであることを意味します。初期化する必要がある場所を示すために、より多くのコードを提供してください。 –

+0

@SimonBaarsその変数が 'null'だった場合、彼のIDEは' setIcon'ではなく 'getTabAt'について文句を言います。 – 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; 
} 

nullでなく、また、どんなgetTabAtリターンする

ActionBar.Tab x = tabLayout.getTabAt(0); 
if(x != null){ 
    x.setIcon(tabIcons[0]); 
} 
nullでないことを確認することを確認する必要があります

ところで、おそらくあなたのIDEにいくつかの設定ミスがあります。これは通常警告であり、エラーではありません。

関連する問題