Android TabHost示例的问题

时间:2010-02-05 18:26:01

标签: android android-tabhost

我一直在尝试从谷歌实施'高级'tabwidget示例。但是,当它试图调用tabHost.addTab(spec);时,我从调试器获得了一个堆栈跟踪。对不起,我没有这里的堆栈跟踪,但我想知道其他人是否有同样的问题(因为这段代码有很多错字和缺少的信息阻止我甚至编译。

有人能指出我这个代码的更正/正在运行的版本吗?

所需的更新信息包括:

<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>

4 个答案:

答案 0 :(得分:12)

我花了最后一个小时左右完成那个教程。以下是我处理的问题和解决方法:

第2步:创建活动时,如果您不通过清单创建活动,则需要手动将它们添加到清单中。

将这些行添加到AndroidManifest.xml:

  <activity android:name=".AlbumsActivity"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">
        </activity>
  <activity android:name=".ArtistsActivity"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">
        </activity>
          <activity android:name=".SongsActivity"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">
        </activity>

步骤3:仅指示您创建ic_tab_artists.xml文件。您还需要为ic_tab_songs.xml和ic_tab_albums.xml创建一个。您可以复制ic_tab_artists.xml(或更改HelloTabView.java选项卡规范以使用每个选项卡的artists.xml文件)。

第4步: / res / layout / main下的第三行到最后一行有一个拼写错误(a;而不是:)

      android:padding="5dp" />
    </LinearLayout>
</TabHost>

第6步:有一个拼写错误,使用调用mTabHost而不是tabHost。改变它。

如前所述,最后一行的getIntent()函数不合适。我只是根据它的id来调用标签。例如:

tabHost.setCurrentTabByTag("albums");

答案 1 :(得分:9)

Android开发者网站上的当前TabHost Example包含一个错误,但也会遗漏一个阻止该示例运行的重要步骤。

首先: 在添加到HelloTabWidget类的onCreate()方法中,尝试使用名为mTabHost的TabHost对象。这是无效的,应该是tabHost。

第二: 本教程省略了AndroidManifest.xml中添加每个活动所需的详细信息。如果没有这个,代码将无法工作,每次尝试执行时都会“强制关闭”。

答案 2 :(得分:2)

android:theme="@android:style/Theme.NoTitleBar"

如果我用

替换它,

对我不起作用

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

它工作正常。

答案 3 :(得分:1)

如Ted更正的示例,如果所有三个活动都不包含以下行,也会起作用:

android:theme="@android:style/Theme.NoTitleBar"

如果除标签标签外还需要标题栏,这非常有用。