2017-01-23 68 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