无法编译。确实:即使在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'?
答案 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中。不知何故,教程说明设法忽略了这一要求。