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));
}
}
你有沒有試着用列表替換的FrameLayout和設置列表是@android上的ID:ID/tabcontent? – jsmith 2012-02-12 18:35:42
我爲什麼要那樣做?根據文檔,你必須有framelayout包含標籤... – Barak 2012-02-12 18:41:00