android - 更改 TabHost 内的 View (一个 Activity ,多个 View )

标签 android view tabs android-tabhost

现在我在我的应用程序 tabhost 中使用单个 Activity 和单独的 View 。

选项卡 Activity :

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TabHost tabs = (TabHost) findViewById(R.id.tabhost);        
    tabs.setup();

    TabHost.TabSpec spec = tabs.newTabSpec(TAB_HOTELS);
    spec.setContent(R.id.tab1);
    spec.setIndicator("Hotels");
    tabs.addTab(spec);

    spec = tabs.newTabSpec(TAB_LAST_MINUTE);
    spec.setContent(R.id.tab2);
    spec.setIndicator("Last Minute");
    tabs.addTab(spec);

布局

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:orientation="vertical"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent" android:layout_height="wrap_content" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:id="@+id/tab1"
                android:orientation="vertical">
                <ListView android:id="@+id/listaLocalita"
                    android:layout_width="fill_parent" android:layout_height="wrap_content" />
            </LinearLayout>

            <LinearLayout android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:id="@+id/tab2"
                android:orientation="vertical" android:paddingTop="60px">
                <TextView android:layout_width="fill_parent"
                    android:layout_height="100px" android:text="This is tab 2"
                    android:id="@+id/txt2" />
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

只要我使用一级深度,一切都运行良好。不幸的是,现在我需要让其中一个选项卡像下面这样工作:

用城市列表加载 ListView 的选项卡,用户单击城市名称,选项卡的内容替换为酒店列表,用户选择酒店并始终在同一选项卡中,加载酒店的信息。

我怎样才能实现这种情况?布局膨胀器?

提前致谢。

最佳答案

你可以使用intent将Activity设置为你的tab内容,这个activity可以调用其他的activity,listView或者任何其他的都可以。

/** tid1 is firstTabSpec Id. Its used to access outside. */
        TabSpec MainTab = tabHost.newTabSpec("tag1");
        TabSpec SearchTab = tabHost.newTabSpec("tag2");
        TabSpec MessageTab = tabHost.newTabSpec("tag3");
        TabSpec ServicesTab = tabHost.newTabSpec("tag4");
        TabSpec SettingsTab = tabHost.newTabSpec("tag5");

        MainTab.setIndicator("Main", res.getDrawable(R.drawable.anchor_36));
        MainTab.setContent(new Intent(this, MainView.class));

    SearchTab.setIndicator("Search", res.getDrawable(R.drawable.clock_36));
    SearchTab.setContent(new Intent(this, SearchView.class));

    MessageTab.setIndicator("Messages", res
            .getDrawable(R.drawable.dialog_36));
    MessageTab.setContent(new Intent(this, MessagesView.class));

    ServicesTab.setIndicator("Services", res
            .getDrawable(R.drawable.cloud_36));
    ServicesTab.setContent(new Intent(this, ServicesView.class));

    SettingsTab.setIndicator("Settings", res
            .getDrawable(R.drawable.settings_36));
    SettingsTab.setContent(new Intent(this, SettingsView.class));

    /** Add tabSpec to the TabHost to display. */
    tabHost.addTab(MainTab);
    tabHost.addTab(SearchTab);
    tabHost.addTab(MessageTab);
    tabHost.addTab(ServicesTab);
    tabHost.addTab(SettingsTab);

现在在加载的 Activity 中,您可以使用如下代码

StartActivity(new intent(currentActivity.this, newActivity.class));

这对你有用。

关于android - 更改 TabHost 内的 View (一个 Activity ,多个 View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650672/

相关文章:

android - SharedPreferences 不会保存强制关闭应用程序

java - 切换屏幕 (libgdx) - 实现 ApplicationListener 的游戏类

c# - stringToHex 和 hexToString C# 和 Android Java

android - 固定纵横比 View

android - 当我更改首选项时,为什么我的 onSharedPreferenceChangeListener 会被多次调用

android - setBackGroundColor 重置 View 的形状

Android:检测软键盘打开

tabs - Android TV 如何在屏幕顶部制作标签?

java - 安卓日志 : How do I output a log message with a TAB character?

Android:不推荐使用非滑动标签?