2016-11-29 22 views
0

我需要禁用選項卡布局中的特定選項卡,但應用程序會崩潰。如何調用null對象上的虛擬方法'void android.view.View.setEnabled(boolean)'參考

public void onTabSelected(TabLayout.Tab tab) { 
    switch (tab.getPosition()){ 
     case 0: tabLayout.getChildAt(0).setEnabled(true); 
       viewPager.setCurrentItem(tab.getPosition()); 
     case 2: tabLayout.getChildAt(2).setEnabled(true); 
       viewPager.setCurrentItem(tab.getPosition()); 
    } 
} 
+0

您的'switch'語句在'case's之後缺少'break'。 –

+0

我試着用break語句,但它不工作 –

+0

請發佈錯誤消息和任何其他代碼來重現問題。另請參閱[MCVE]。 –

回答

0

在我看來,你只是缺少break陳述。

public void onTabSelected(TabLayout.Tab tab) { 
    switch (tab.getPosition()){ 
     case 0: tabLayout.getChildAt(0).setEnabled(true); 
       viewPager.setCurrentItem(tab.getPosition()); 
       break; 
     case 2: tabLayout.getChildAt(2).setEnabled(true); 
       viewPager.setCurrentItem(tab.getPosition()); 
       break; 
    } 
} 

的錯誤似乎是在0 case落空嘗試tabLayout.getChildAt(2),這是一個空對象引用。

+0

i嘗試使用break語句,但其顯示錯誤 –

+0

嘗試在空對象引用 –

+0

上調用虛擬方法'void android.view.View.setEnabled(boolean)'然後,可能是'tabLayout'的第三個孩子實際上不是第三個標籤。您是否確認如果您移除案例2,問題不會發生? –

相關問題