2015-03-28 1 views
0

Поскольку TabHost сам не устарел, и мне просто нужно очень простое решение для переключения между двумя элементами управления (возможно, 3). Я решил, что TabHost идеально подходит для моих нужд. Однако я получаю очень загадочная ошибка ....Android TabHost странная ошибка

Это код, у меня есть

myTabHost = (TabHost) findViewById(android.R.id.tabhost); 
myTabHost.setup(); 
TabHost.TabSpec tmpSpec = null; 
TabContentFactory tmpContentFactory = null; 
tmpSpec = myTabHost.newTabSpec("main_param_time"); 
tmpSpec.setIndicator("sometext"); 

// error happens here here 
tmpSpec.setContent(R.id.charts_stickchart); 

// rest of code here. e.g. addTab etc. 

ошибка я получаю

java.lang.RuntimeException: Невозможно создать содержимое вкладки потому что может не найти вид с идентификатором 2131427359

Мой файл XML выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
<TabHost 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@android:id/tabhost" 
> 
     <LinearLayout 
       android:id="@+id/LinearLayout01" 
       android:orientation="vertical" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent">  
       <TabWidget 
        android:id="@android:id/tabs" 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent"> 
       </TabWidget> 
       <FrameLayout 
        android:id="@android:id/tabcontent" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent" 
       > 
       </FrameLayout> 
     </LinearLayout> 
</TabHost> 
     <cn.limc.androidcharts.view.StickChart 
      android:id="@+id/charts_stickchart" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:visibility="gone" 
      />  
     <cn.limc.androidcharts.view.SpiderWebChart 
      android:id="@+id/charts_spiderwebchart" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:visibility="gone" 
      /> 
</LinearLayout> 

ответ

1

переместить две карты, чтобы быть дети <FrameLayout>, как в this sample app:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tabhost" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TabWidget android:id="@android:id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
    /> 
    <FrameLayout android:id="@android:id/tabcontent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <AnalogClock android:id="@+id/tab1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 
     <Button android:id="@+id/tab2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="A semi-random button" 
     /> 
    </FrameLayout> 
    </LinearLayout> 
</TabHost> 
+0

Исправлена ​​проблема. Благодаря! Дизайнер выдает ошибку, но она работает во время выполнения, так что это здорово :) – Tom