我遇到了在TabActivity类型的新Intent中使用TabHost的问题,我希望你能指出我正确的方向。当我尝试在原始Intent中查看它时,它可以正常工作:setContentView(R.layout.main)
我得到一个“强制关闭”并且在logcat中,即使我的Tabhost id =“@ android:id / tabhost”,我也会收到以下错误:
02-18 22:23:11.937: 错误/ AndroidRuntime(5944):引起: java.lang.RuntimeException:你的 内容必须有一个标识为TabH的标签 属性是'android.R.id.tabhost'
我在Manifest.xml文件中声明了第二个意图: XML:
<activity android:name=".NextActivity" android:label="@string/app_name" >
在第一个活动(MainActivity)中,我使用extras启动第二个intent(NextActivity),如下所示:
Intent nextActivity = new Intent(MainActivity.this,NextActivity.class);
Bundle b_next=new Bundle();
b_next.putString("s_string", myString);
nextActivity.putExtras(b_next);
在我的NextActivity.java文件中,我得到了额外内容并尝试显示TabHost视图:
public class NextActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String myString;
Bundle b_initial;
b_initial = getIntent().getExtras();
myString = b_initial.getString("s_string");
setContentView(R.layout.main);
}
}
在Android开发者网站(Hellow View)上使用TabHost示例时出现同样的错误:
Main.xml:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android: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">
<TextView
android:id="@+id/textview1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="this is a tab" />
<TextView
android:id="@+id/textview2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="this is another tab" />
<TextView
android:id="@+id/textview3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="this is a third tab" />
</FrameLayout>
</LinearLayout>
</TabHost>
先谢谢大家......
澄清: 这是我从LogCat真正得到的:
显示java.lang.NullPointerException
在android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java 285) 在android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640) 在android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640) 在android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java 640) 在android.view.ViewRoot.handleMessage(ViewRoot.java 1645) 在android.os.Handler.dispatchMessage(Handler.java 99) 在android.os.Looper.loop(Looper.java 123) 在android.app.ActivityThread.main(ActivityThread.java 3948) at java.lang.reflect.Method.invokeNative(Native 法)
在java.lang.reflect.Method.invoke(Method.java 521) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java 782) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java 540) 在dalvik.system.NativeStart.main(Native 方法)
答案 0 :(得分:7)
我遇到了同样的问题。幸运的是,有一个快速修复:
R
文件。答案 1 :(得分:3)
我复制并粘贴了代码,并注意到我在id属性中有:
android:id="@+id/tabs"
当我真正想要的是:
android:id="@android:id/tabs"
答案 2 :(得分:2)
我之前构建过id为android:id="@+id/tabhost"
的tabhosts。这对你有用吗?
您还可以考虑以编程方式构建标签视图:
TabHost t = getTabHost();
TabSpec tab = t.newTabSpec(label)
.setIndicator(label, icon)
.setContent(intent);
t.addTab(tab);
答案 3 :(得分:2)
我也遇到过这个问题。我有一个XML文件没有在我的res / layout中正确地链接到我的代码。当我修改命名时,问题就消失了。
答案 4 :(得分:2)
即使我已经将我的main.xml更改为使用android:id="@android:id/tabhost"
,如所声明的错误,它仍然尝试使用旧名称。最后我发现文件res / layout-port / main.xml与main.xml完全相同,只是使用了错误的android:id。我必须偶然添加一个纵向视图,并且它保持旧值。修复肖像文件或删除它都可以解决我的问题。
答案 5 :(得分:1)
我也有这个错误。对我来说,它会在混淆后出现(通过ProGuard),在混淆之前它很好。
最后,我将我的布局文件重命名为更复杂和独特的东西,而ProGuard并没有搞砸链接。比降低ProGuard配置路径更容易。
所以我的问题类似于SapphireSun,虽然通过不同的过程表达(并且发布日食,只是为了让事情变得更加困难)。
这可能是获取此错误的更为模糊的方法之一,但我认为值得一提。
答案 6 :(得分:1)
"public class NextActivity extends TabActivity"
- 将TabActivity更改为ActivityGroup。
当你想在tabhost.it中运行tabhost时问题就出现了。
答案 7 :(得分:0)
在使用SVN时,我在团队项目中遇到了同样的错误。有时,eclipse从项目的bin文件夹上传classes.dex和resources.ap_,其他人通过SVN更新获取它。
由于这些二进制文件是在具有单独代码的单个机器上生成的,因此可能是错误发生的地方。
清理项目文件(Project - &gt; Clean)始终为我们解决了问题!
答案 8 :(得分:0)
我有这个问题以及'错误:未知选项' - no-crunch''。如果您在Eclipse中更新了ADT插件,但尚未同时更新SDK。在Eclipse中更新SDK Manager,为我解决了这个问题。