在SDK 1.5下运行Android教程HelloTabWidget的错误:“setCurrentTag(getIntent())”

时间:2010-02-01 23:55:46

标签: java android

无法编译。确实:即使在1.5中,这个api,getIntent()也已被列为已弃用。

我得到的错误消息是getIntent()没有返回String,但是setCurrentTab()需要一个字符串。

如果我猜并将该行改为:

“tabHost.setCurrentTab(1); // setCurrentTab(getIntent())”,

然后它编译,构建,但不运行。我从模拟器中收到“意外停止”错误消息。我甚至无法将Log.d输出,因此它似乎很早就意外地停止了。

所以第一个主要问题是:http://developer.android.com/resources/tutorials/views/hello-tabwidget.html中OnCreate()的最后一行中对“tabHost.setCurrentTab(getIntent())”的正确修复是什么?

第二个也是一个更简单的问题是:我是否正确地想在发生这种情况的地方用tabHost取代'mTabHost'?

2 个答案:

答案 0 :(得分:4)

以下是该特定教程的问题和修复:

第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 :(得分:0)

在非正式的Android Meetup中,我能够确认我的第一个猜测是在球场:教程中打印的线条确实是错误的,它应该被替换为类似“tabHost.setCurrentTab(0); //是setCurrentTab(getIntent())“。

在我可以运行HelloTabWidget教程之前还有一个我必须解决的重大遗漏:专辑|艺术家| SongsActivity都必须添加到清单manifest.xml中。不知何故,教程说明设法忽略了这一要求。