3
if( ......)
    {


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

    }

这段代码有什么问题吗?当我在 onCreate() 方法中添加这段代码时,应用程序崩溃了。知道吗?

我的日志猫:

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)

也试过这段代码。仍然不断崩溃。

getTabHost().getTabWidget().removeViewAt(0);
4

2 回答 2

15

我的回答会太长,所以我把它放在一个答案中。

到目前为止你有

TabHost  tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.getTabWidget().getChildAt(0).setVisibility(View.GONE);

您收到 NullPointerException,这意味着无论何时使用该行代码,您都在尝试更改屏幕上不存在的东西,或者可能是屏幕外的东西。

检查 R 的导入语句。

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

import your.package.R;

并不是

import android.R;

修复后,当您引用选项卡主机时,请使用以下内容:

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

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

于 2012-05-31T16:47:25.610 回答
4

如果你想隐藏 Tab 你应该使用:

getChildTabViewAt()而不是getChildAt()

所以你的代码应该是这样的:

  tabHost.getTabWidget().getChildTabViewAt(0).setVisibility(View.GONE);
于 2012-05-31T16:22:25.200 回答