3

私はおそらく愚かなことをしています...同じタブホスト上に静的に作成されたタブが1つと、動的に作成されたタブの山があります。デフォルトでは、静的タブが表示されます。動的に作成されたタブの1つをクリックすると、動的コンテンツが正しく読み込まれます。しかし、その後、動的に作成されたか静的に作成されたかに関係なく、他のタブをクリックすると、何も実行されません。なぜですか?

MyActivitysonResumeメソッドで実行しようとしていることは次のとおりです。

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>
4

1 に答える 1

2

ついに私の間違いを見つけました。他の誰かが同じ問題に遭遇した場合:何らかの理由で、tabContentをScrollViewにすることはできません。

スクロールビューの周りにLinearLayoutコンテナを配置すると、すべてが期待どおりに機能しました。

于 2013-03-13T09:14:47.350 に答える