Android Изменить текст / цвет вкладки / onclicklistener

Я почти два часа ищу ошибку, может быть, вы можете мне помочь. Я хочу изменить TextColor моих созданных вкладок. Все работает нормально, цвет меняется. Сейчас хочу изменить Color через OnTabChanged, но тут программа вылетает с NullPointer Exception. я не вижу ошибки помогите пожалуйста

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"));
    }

ОШИБКА в консоли:

threadid = 1: поток завершается с необработанным исключением (group = 0x4184f898) НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main java.lang.NullPointerException в eu.blackstone.muslimpocket.Zakah.onTabChanged(Zakah.java:96) в android.widget.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) в android.view.View.performClick(View.java:4475) в android.view.View$PerformClick.run(View.java:18784) в android.os.Handler.handleCallback(Handler.java:730) на android.os.Handler.dispatchMessage(Handler.java:92) на android.os.Looper.loop(Looper.java:137) на android.app.ActivityThread.main(ActivityThread.java:5414) на java.lang. Reflect.Method.invokeNative(собственный метод) в java.lang.reflect.Method.invoke(Method.java:525) в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) a t com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) в dalvik.system.NativeStart.main(собственный метод)

Любые идеи?


person Hicham    schedule 24.05.2014    source источник


Ответы (1)


мое предположение

tabHost.getCurrentTab() 

возвращает -1 так

getChildAt(tabHost.getCurrentTab())

возвращает ноль. В этом случае проблема может быть решена добавлением теста, чтобы избежать того, чтобы currentTab был равен -1.

person Steel    schedule 24.05.2014