2017-01-23 107 views
0

Mainactivity:的Android tabhost错误空指针tabwidget

public class MainActivity extends AppCompatActivity { 
    TabHost mTabHost; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      mTabHost = (TabHost) findViewById(android.R.id.tabhost); 
      setupTab(new TextView(this), "Tab 1"); 
      setupTab(new TextView(this), "Tab 2"); 
      setupTab(new TextView(this), "Tab 3"); 

     } 
     private void setupTab(final View view, final String tag) { 
      View tabview = createTabView(mTabHost.getContext(), tag); 
      TabHost.TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabHost.TabContentFactory() { 

       public View createTabContent(String tag) {return view;} 
      }); 
      mTabHost.addTab(setContent); 
     } 
     private static View createTabView(final Context context, final String text) { 
      View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
      TextView tv = (TextView) view.findViewById(R.id.tabsText); 
      tv.setText(text); 
      return view; 
     } 

    } 

Activity_main

<?xml version="1.0" encoding="utf-8"?> 

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

<LinearLayout android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

<TabWidget android:id="@android:id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 

<FrameLayout android:id="@android:id/tabcontent" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

</FrameLayout> 
    </LinearLayout> 
    </TabHost> 

我为了让没有材料设计库底部的导航栏与标签试验。 如何解决这个错误? (尝试调用空对象引用的虚拟方法'void android.widget.TabWidget.setStripEnabled(boolean)')

回答

1

您需要调用mTabHost.setup(...);

原因是您的活动没有扩展TabActivity,您应该在TabHost.addTab(...)方法之前调用TabHost.setup(...)。

image