隐藏Android中TabHost中的选项卡

Swa*_*yam 3 tabs android visibility

if( ......)
    {


        tabHost.getTabWidget().getChildAt(0).setVisibility(View.GONE);
                    //to hide the first tab in the TabHost

    }
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题吗?当我在onCreate()方法中添加此代码时应用程序崩溃..任何想法?

我的LogCat:

05-31 22:03:38.471: E/AndroidRuntime(598): Caused by: java.lang.NullPointerException 05-31 22:03:38.471: E/AndroidRuntime(598): at swayam.dev.mushtouch.MushTouchActivity.setVisibilityControls(MushTouchActivity.j??ava:75) 05-31 22:03:38.471: E/AndroidRuntime(598): at swayam.dev.mushtouch.MushTouchActivity.onCreate(MushTouchActivity.java:220) 05-31 22:03:38.471: E/AndroidRuntime(598): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-31 22:03:38.471: E/AndroidRuntime(598): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
Run Code Online (Sandbox Code Playgroud)

也尝试了这段代码.仍然不断崩溃.

getTabHost().getTabWidget().removeViewAt(0);
Run Code Online (Sandbox Code Playgroud)

wdz*_*mia 15

我的回答太长了,所以生病了.

到目前为止你有

TabHost  tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.getTabWidget().getChildAt(0).setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

您将获得NullPointerException,这意味着无论何时使用该行代码,您都会尝试更改屏幕上不存在的内容,或者可能更改屏幕外的内容.

检查R的Import语句.

在您的包声明下面,您应该具有以下内容:

import your.package.R;
Run Code Online (Sandbox Code Playgroud)

并不是

import android.R;
Run Code Online (Sandbox Code Playgroud)

修复后,当您引用标签主机时,请使用以下内容:

TabHost  tabHost = (TabHost)findViewById(R.id.tabhost);
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请确保tabhost实际上在屏幕上,并且您不在单独的活动中.