2014-05-24 164 views
0

我差不多兩個小時尋找錯誤,也許你可以幫助我。我想更改我創建的標籤的 TextColor。一切正常,它會改變顏色。 現在我想通過OnTabChanged改變顏色,但是在這裏程序崩潰與NullPointer異常。我不能看到這個錯誤ü可以幫助我PLSAndroid更改選項卡文本/顏色/ onclicklistener

Zakah.java

public class Zakah extends ActionBarActivity implements OnTabChangeListener{ 
    TabHost tabHost; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 


      super.onCreate(savedInstanceState); 
      setContentView(R.layout.zakah); 

      TabHost tabHost=(TabHost) (findViewById(android.R.id.tabhost)); 
      tabHost.setup(); 

      TabSpec spec1=tabHost.newTabSpec("Tab 1"); 
      spec1.setContent(R.id.tab1); 
      spec1.setIndicator("Einleitung"); 

      TabSpec spec2=tabHost.newTabSpec("Tab 2"); 
      spec2.setIndicator("Lehrmaterial"); 
      spec2.setContent(R.id.tab2); 

      TabSpec spec3=tabHost.newTabSpec("Tab 3"); 
      spec3.setIndicator("Tools"); 
      spec3.setContent(R.id.tab3); 

      tabHost.addTab(spec1); 
      tabHost.addTab(spec2); 
      tabHost.addTab(spec3); 


      for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) 
      { 
       tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#8A4117")); 
      } 
      tabHost.setOnTabChangedListener(this); 



      //Spinner 
     Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
     // Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
        R.array.waehrung, R.layout.spinner_string); 
     // Specify the layout to use when the list of choices appears 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     // Apply the adapter to the spinner 
     spinner.setAdapter(adapter); 
      } 
. 
. 
. 
. 

public void onTabChanged(String tabId) { 
     // TODO Auto-generated method stub 
     for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) 
     { 
      tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#8A4117")); 
     } 

     tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#C35817")); 
    } 

錯誤在控制檯:

線程ID = 1:未捕獲的異常(組線程退出= 0x4184f898) 致命異常:主要java.lang.NullPointerException在 eu.blackstone.muslimpocket.Zakah.onTabChanged(Zakah.java:96)在 android.w idget.TabHost.invokeOnTabChangeListener(TabHost.java:463)在 android.widget.TabHost.setCurrentTab(TabHost.java:448)在 android.widget.TabHost $ 2.onTabSelectionChanged(TabHost.java:161)在 android.widget .TabWidget $ TabClickListener.onClick(TabWidget.java:563) at android.view.View.performClick(View.java:4475)at android.view.View $ PerformClick.run(View.java:18784)at android .os.Handler.handleCallback(Handler.java:730)at android.os.Handler.dispatchMessage(Handler.java:92)at android.os.Looper.loop(Looper.java:137)at android.app .ActivityThread.main(ActivityThread.java:5414)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.ref方法.invoke(Method.java:525) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187) at com.android.internal.os.ZygoteInit.main(ZygoteInit。 java:1003)at dalvik.system.NativeStart.main(Native Method)

任何想法?

回答

0

我的猜測是

tabHost.getCurrentTab() 

將返回-1所以

getChildAt(tabHost.getCurrentTab()) 

被返回null。添加一個測試以避免currentTab爲-1可以解決這種情況下的問題。

相關問題