Android TabHost示例的问题

Kev*_*imm 8 android android-tabhost

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

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

所需的更新信息是:

<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>
Run Code Online (Sandbox Code Playgroud)

小智 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>
Run Code Online (Sandbox Code Playgroud)

步骤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>
Run Code Online (Sandbox Code Playgroud)

第6步:有一个拼写错误使用调用mTabHost而不是tabHost.更改.

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

tabHost.setCurrentTabByTag("albums");
Run Code Online (Sandbox Code Playgroud)


crv*_*crv 9

Android开发者网站上的当前TabHost示例包含一个错误,并且还省略了阻止该示例运行的重要步骤.

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

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