2012-02-12 41 views
0

我試圖插入一個ListView作爲Tabhost中的一個選項卡。我瀏覽了網頁,發現有幾個實現說他們工作,但不適合我(無論是在他們自己的項目中,還是在合併到我的項目中)。把列表視圖放在TabHost(作爲一個視圖,而不是一個活動)時遇到困難

我已經解決了以下問題,它可以工作(至少不會崩潰),並且我在LogCat中沒有收到任何錯誤,但該選項卡顯示爲空。

我已經檢查了提供列表(tooldisplay)的數組並且它已被填充。

我寧願不必觸發另一個活動來填充選項卡。

setupdetail.xml:爲tabhost

<?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:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:padding="5dp" > 
     <TextView 
      android:id="@+id/setupheader" 
      android:layout_width="fill_parent" 
      android:layout_height="20dp" 
      android:text="This will be the setup header" 
      android:textSize="15dp" /> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="30dp" 
      android:gravity="bottom" /> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="5dp" > 
      <!-- General Info Tab --> 
      <LinearLayout 
       android:id="@+id/general_tab" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" > 
      </LinearLayout> 
      <!-- Tool Tab --> 
      <ListView 
       android:id="@+id/list1" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:drawSelectorOnTop="false" /> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

活動(編輯以去除不相關的代碼):

public class SetupDisplay extends TabActivity { 
    private String[] tooldisplay = new String[20]; 
    private ListView mListView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.setupdetailmain); 
     // Set up tabs 
     TabHost tabHost = getTabHost(); 
     TabHost.TabSpec spec; 
     spec = tabHost.newTabSpec("general").setIndicator("General") 
       .setContent(R.id.general_tab); 
     tabHost.addTab(spec); 
     spec = tabHost.newTabSpec("tools").setIndicator("Tools") 
       .setContent(R.id.list1); 
     tabHost.addTab(spec); 
     // Load data into tooldisplay[] 
     // get view & set adapter 
     mListView = (ListView)findViewById(R.id.list1); 
     mListView.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, tooldisplay)); 
    } 
} 
+0

你有沒有試着用列表替換的FrameLayout和設置列表是@android上的ID:ID/tabcontent? – jsmith 2012-02-12 18:35:42

+0

我爲什麼要那樣做?根據文檔,你必須有framelayout包含標籤... – Barak 2012-02-12 18:41:00

回答

0

,我發現我的問題的根源後,更使然。爲以後出現同樣問題的任何人提供答案。

我正在使用錯誤的構造函數。由於我在佈局中有不止一個textview,我需要指定佈局和適配器的textview(請注意,我修改的代碼與最初發布時的代碼稍有不同,因爲我切換到自定義列表佈局,但問題仍然存在,直到我遇到構造函數修復)。

mListView.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, tooldisplay)); 

應該是:

ListView mListView = (ListView)findViewById(R.id.list1);   
    mListView.setAdapter(new ArrayAdapter<String>(this,   
      R.layout.listlayout, R.id.ListItem1, tooldisplay));   
相關問題