我可能在做傻事…我在同一个tabhost上有一个静态创建的选项卡和一堆动态创建的选项卡。默认情况下显示静态选项卡。当我单击其中一个动态创建的选项卡时,它将正确加载动态内容。但当我点击之后的任何其他选项卡时,不管它是动态创建的还是静态创建的,它都不会做任何事情。知道为什么吗?
以下是我在myactivitys onresume方法中要做的事情:

final TabHost tabs = (TabHost)findViewById(R.id.tabHost);
tabs.setup();

// Tab with static content
TabHost.TabSpec instructions = tabs.newTabSpec("instructions");
tabs.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
    @Override public void onTabChanged(String tabId) {
        setTabColors(tabs);
    }
});
instructions.setContent(R.id.instructions);
instructions.setIndicator("Instructions");
tabs.addTab(instructions);

// Tabs with dynamic content
for (int i = 0; i < 5; i++) {
    TabHost.TabSpec category = tabs.newTabSpec("cat" + i);
    final boolean m_editable = editable;
    category.setContent(new TabHost.TabContentFactory() {
        public View createTabContent(String tag) {
            ScrollView scrollView = new ScrollView(MyActivity.this);
            TableLayout dataMatrix = new TableLayout(MyActivity.this);
            final LayoutInflater inflater = LayoutInflater.from(MyActivity.this);
            for(int i=0; i<2; i++) {
                TableRow item = (TableRow) inflater.inflate(R.layout.categorydata_entry, dataMatrix, false);
                ((EditText)(item.getChildAt(0))).setText("row"+i);
            }
            dataMatrix.addView(item,new TableLayout.LayoutParams( TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
        }
        scrollView.addView(dataMatrix);
        return scrollView;
    }
});
category.setIndicator(i);
tabs.addTab(category);
    }

以及layout.xml中的相关元素:
<TabHost android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tabHost" >
    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:scrollbars="none" >
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </HorizontalScrollView>
    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@android:id/tabcontent" >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/instructions" >
            <TextView android:layout_width="fill_parent"
                android:text="This is the static content tab" />
        </LinearLayout>
    </FrameLayout>
</TabHost>

最佳答案

终于发现了我的错误。如果其他人遇到同样的困难:不管出于什么原因,tabcontent不能是scrollview。
在scroll视图周围放置一个linearlayout容器可以使所有工作都按预期进行。

09-11 11:12