0

我正在尝试制作标签布局。我正在使用教程代码(如下),但它不起作用。LogCat 给出了这个错误:

04-19 19:02:16.297: 错误/AndroidRuntime(455): java.lang.RuntimeException: 无法启动活动 ComponentInfo{jusbrz.bakalauras/jusbrz.bakalauras.FilesTabsActivity}: java.lang.RuntimeException: 您的内容必须有id 属性为 'android.R.id.tabhost' 的 TabHost

我添加了新的活动来表现。

XML:

<?xml version="1.0" encoding="utf-8"?>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout 
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget 
android:id="@+id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout 
android:id="@+id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</FrameLayout>
</LinearLayout>     
</TabHost>

在主要活动中使用此代码:

package jusbrz.bakalauras;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
public class FilesTabsActivity extends TabActivity{
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.files_tabs_layout);

    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, AllFilesTabActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("Visi").setIndicator("Visi").setContent(intent);
    tabHost.addTab(spec);
}
}

那么问题可能出在哪里?

已编辑

import android.app.TabActivity;
import android.os.Bundle;

public class AllFilesTabActivity extends TabActivity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.all_files_tab_layout);

        }

}
4

2 回答 2

1

您在布局中缺少 tabhost id。请将您的布局更新为:

<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/tabhost">

更新你的类FilesTabsActivity

TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
TabSpec firstTabSpec = tabHost.newTabSpec("Visi");
firstTabSpec.setIndicator("Visi").setContent(new Intent(this,AllFilesTabActivity.class));
/** Add tabSpec to the TabHost to display. */
tabHost.addTab(firstTabSpec);

如果你是如果你正在动态添加标签:

setContentView(R.layout.files_tabs_layout);
于 2012-04-19T19:32:16.577 回答
0

如果你要使用TabActivity,你需要使用@android:id/tabhost作为你的 android ID 值TabHost

浏览 StackOverflow 上的其他一些问题,似乎执行“Projects --> Clean”并重新启动 Eclipse 也可能会有所帮助。

于 2012-04-19T19:34:55.697 回答