3
if( ......)
    {


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

    }

このコードに問題はありますか? このコードを 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)

このコードも試しました。それでもクラッシュし続けます。

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 ステートメントを確認します。

パッケージステートメントの下には、次のものが必要です。

import your.package.R;

そしてそうではない

import android.R;

それが修正されたら、タブホストを参照するときに、次を使用します。

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

それでもうまくいかない場合は、タブホストが実際に画面上にあり、別のアクティビティではないことを確認してください。

于 2012-05-31T16:47:25.610 に答える
4

タブを非表示にする場合は、次を使用する必要があります。

getChildAt()の代わりにgetChildTabViewAt()

したがって、コードは次のようになります。

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