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

レイアウトにタブホスト 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

を使用する場合は、 の Android ID 値としてTabActivityを使用する必要があります。@android:id/tabhostTabHost

StackOverflow に関する他のいくつかの質問を閲覧すると、「プロジェクト --> クリーン」を実行して Eclipse を再起動することも役立つようです。

于 2012-04-19T19:34:55.697 に答える