2017-01-23 11 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.setup (...) перед методом TabHost.addTab (...).

image