我创建了一个应用程序,其中有四个选项卡加载了特定的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作为内容时将其用作内容,所以试着将其传递到方法中,并将其设置为内容