0

例として、私のタブが最初にどのようにセットアップされるかについて、次のチュートリアルを参照してください。

タブの 1 つで実行される通常のアクティビティの代わりに、別の TabActivity が必要です。だから私がやろうとしているのは、TabActivity 内で TabActivity を実行することです。問題はIDの競合だと思います。セカンダリ アクティビティの xml ファイルの ID を変更し、アクティビティでそれらを手動で呼び出すことで、これを解決しようとしましたが、うまくいきませんでした。

私はこれに対する解決策を何時間も探していましたが、何も思いつきませんでした.

4

1 に答える 1

0

アプリケーションでの複数のタブ アクティビティが可能です。

例: アプリには、タブ 1 とタブ 2 の 2 つのタブを持つ Launcher TabActivity (HomeTabActivity) が含まれています。

Tab 1 can be a TabActivity with two or more tabs.
Tab 2 can be a TabActivity with two or more tabs. 

FirstTab, SecondTab, ThirdTab and FourthTab are simple activities actings as child for child of HomeTabActivity.

xml files containing TabHost as parent element
1. hometab.xml
2. tab1.xml
3. tab2.xml

To differentiate between HomeTabActivity and Its child TabActivities i.e Tab1 and Tab2 
I have put TabWidget at top for HomeTabActivity and at bottom for Tab1 and Tab2.

HomeTabActivity (最初のメイン タブ アクティビティ):

public class HomeTabActivity extends TabActivity 
{
    private TabHost mTabHost = null;
    private Intent mIntent = null;
    private TabHost.TabSpec mTabSpec = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hometab); 
        initializeTabs();
    }

    private void initializeTabs() {
        mTabHost = getTabHost();

        mIntent = new Intent().setClass(this, Tab1.class);
        mTabSpec = mTabHost
                .newTabSpec("Tab1")
                .setIndicator("Tab1",
                        getResources().getDrawable(R.drawable.ic_launcher))
                .setContent(mIntent);
        mTabHost.addTab(mTabSpec);

        mIntent = new Intent().setClass(this, Tab2.class);
        mTabSpec = mTabHost
                .newTabSpec("Tab2")
                .setIndicator("Tab2",
                        getResources().getDrawable(R.drawable.ic_launcher))
                .setContent(mIntent);
        mTabHost.addTab(mTabSpec);

        mTabHost.setCurrentTab(0);
    }

}

Tab1 (HomeTabActivity 内に埋め込まれた TabActivity) :

public class Tab1 extends TabActivity 
{
    private TabHost mTabHost = null;
    private Intent mIntent = null;
    private TabHost.TabSpec mTabSpec = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab1);
        initializeTabs();
    }

    private void initializeTabs() {
        mTabHost = getTabHost();
        mIntent = new Intent().setClass(this, FirstTab.class);

        mTabSpec = mTabHost
                .newTabSpec("Tab1 Child 1")
                .setIndicator("Tab1 Child 1",
                        getResources().getDrawable(R.drawable.ic_launcher))
                .setContent(mIntent);
        mTabHost.addTab(mTabSpec);

        mIntent = new Intent().setClass(this, SecondTab.class);
        mTabSpec = mTabHost
                .newTabSpec("Tab1 Child 2")
                .setIndicator("Tab1 Child 2",
                        getResources().getDrawable(R.drawable.ic_launcher))
                .setContent(mIntent);
        mTabHost.addTab(mTabSpec);
        mTabHost.setCurrentTab(0);
    }
}

Tab2 (HomeTabActivity 内に埋め込まれた別の TabActivity) :

public class Tab2 extends TabActivity 
{
    private TabHost mTabHost = null;
    private Intent mIntent = null;
    private TabHost.TabSpec mTabSpec = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab2);
        initializeTabs();
    }

    private void initializeTabs() {
        mTabHost = getTabHost();
        mIntent = new Intent().setClass(this, ThirdTab.class);

        mTabSpec = mTabHost
                .newTabSpec("Tab2 Child 1")
                .setIndicator("Tab2 Child 1",
                        getResources().getDrawable(R.drawable.ic_launcher))
                .setContent(mIntent);
        mTabHost.addTab(mTabSpec);

        mIntent = new Intent().setClass(this, FourthTab.class);
        mTabSpec = mTabHost
                .newTabSpec("Tab2 Child 2")
                .setIndicator("Tab2 Child 2",
                        getResources().getDrawable(R.drawable.ic_launcher))
                .setContent(mIntent);
        mTabHost.addTab(mTabSpec);
        mTabHost.setCurrentTab(1);
    }
}

hometab.xml

<?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="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </FrameLayout>
    </LinearLayout>

</TabHost>

tab1.xml および tab2.xml

<?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="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:background="@color/androidblue"
            android:layout_weight="1">
        </FrameLayout>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" 
            android:layout_weight="0">
        </TabWidget>
    </LinearLayout>

</TabHost>
于 2013-02-07T11:31:34.593 に答える