3

特定の Web ビューがロードされた 4 つのタブを持つアプリケーションを作成しました。タブの下に広告を追加する予定でした。私のコードでは、TabHost として作成された ViewGroup としてコンテンツ ビューを設定しました。この Viewgroup を linearlayout に追加すると、TabHost.add(TabSpec) gets NullPointer 例外が原因でアプリケーションがクラッシュしました。これがコードです。

 public View addTabBarView(Context context)
{        
     m_vForm = _createTABForm(context);
     return m_vForm;
}     
private ViewGroup _createTABForm(Context context) {

    sTabHost = new TabHost(context,null);
    sTabHost.setLayoutParams(
            new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));        
    HorizontalScrollView sScrollView = new HorizontalScrollView(context);
    LinearLayout.LayoutParams sScrollViewParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    sScrollView.setVerticalScrollBarEnabled(false);
    sScrollView.setHorizontalScrollBarEnabled(false);
    sScrollView.setScrollBarStyle(TRIM_MEMORY_UI_HIDDEN);
    sScrollView.setFillViewport(true);

    TabWidget tabWidget = new TabWidget(context); 
    LinearLayout.LayoutParams sTabWidgetParams = new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    tabWidget.setId(android.R.id.tabs);
    sScrollView.addView(tabWidget, sTabWidgetParams);          
    sTabHost.addView(sScrollView, sScrollViewParams);         
    FrameLayout frameLayout = new FrameLayout(context);
    frameLayout.setId(android.R.id.tabcontent);
    final float scale = context.getResources().getDisplayMetrics().density;
    int paddingtop = (int) (64 * scale + 0.5f);
    frameLayout.setPadding(0, paddingtop, 0, 0);
    sTabHost.addView(frameLayout, new LinearLayout.LayoutParams(
              LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));         

    sTabHost.setup();        
    return sTabHost;
}

 public addTabItem(final String url, String tabTitle, Drawable tabIcon)
 {
  TabSpec ts1 = sTabHost.newTabSpec(tabTitle); 
        if(tabIcon==null)
            ts1.setIndicator(tabTitle);
        else
            ts1.setIndicator(tabTitle,tabIcon);        
        ts1.setContent(new TabHost.TabContentFactory(){
             @SuppressWarnings("deprecation")
            public View createTabContent(String tag)
             {               
                //Creating webview inside a layout   
             }  
        }); 
        sTabHost.addTab(ts1); //Here throws NullPointer exception.
        sTabHost.setOnTabChangedListener(this);
 }

どうすれば要件を達成できますか?

4

1 に答える 1