将TabHost控件添加到Linearlayout/在TabHost选项卡下添加布局



我创建了一个应用程序,其中有四个选项卡加载了特定的web视图。我计划在标签下面加广告。在我的代码中,我已经将内容视图设置为创建为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);
 }

我怎样才能达到我的要求。?

您没有使用XML布局吗?它比上面的要高效整洁得多。。。

你还没有包含任何logcat,所以没有太多内容,但在我看来,问题是你的addTabItem试图制作一些任意的东西,并在你真正想使用frameLayout作为内容时将其用作内容,所以试着将其传递到方法中,并将其设置为内容

相关内容

  • 没有找到相关文章

最新更新