0

序章

私は実装を使用したかった Tabhost を使用しますが、理由がよくわからないクラッシュに直面しました。Google デベロッパー ガイドを探してみましたが、アプリがクラッシュする理由がわかりません

私のコード

public class TabActivities extends FragmentActivity  {

    private FragmentTabHost mTabHost;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.frequencies);

        mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),
                MyLayout1.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"),
                MyLayout.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab3"),
                MyLayout2.class, null); 
        mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab4"),
                MyLayout3.class, null);  
        }
}

MyLayout1、2、3 にはレイアウトのみが含まれます

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);
}

私はすでにAndroidマニフェストにクラスを含めています。

ここに私のlogcatがあります

07-29 22:50:58.226: E/AndroidRuntime(25877): FATAL EXCEPTION: main
07-29 22:50:58.226: E/AndroidRuntime(25877): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Test.projecttest/com.Test.projecttest.TabActivities}: java.lang.ClassCastException: android.widget.TabHost cannot be cast to android.support.v4.app.FragmentTabHost
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2081)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2106)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.ActivityThread.access$700(ActivityThread.java:134)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1217)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.os.Looper.loop(Looper.java:137)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.ActivityThread.main(ActivityThread.java:4856)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at java.lang.reflect.Method.invokeNative(Native Method)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at java.lang.reflect.Method.invoke(Method.java:511)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at dalvik.system.NativeStart.main(Native Method)
07-29 22:50:58.226: E/AndroidRuntime(25877): Caused by: java.lang.ClassCastException: android.widget.TabHost cannot be cast to android.support.v4.app.FragmentTabHost
07-29 22:50:58.226: E/AndroidRuntime(25877):    at com.Test.projecttest.TabActivities.onCreate(TabActivities.java:22)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.Activity.performCreate(Activity.java:5047)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
07-29 22:50:58.226: E/AndroidRuntime(25877):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2045)
07-29 22:50:58.226: E/AndroidRuntime(25877):    ... 11 more

私の周波数.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost
    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">

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="0"/>

    <FrameLayout
        android:id="@+android:id/realtabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>

    <TabWidget
        android:id="@android:id/tabs"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"/>

</LinearLayout>
</android.support.v4.app.FragmentTabHost>
4

1 に答える 1

2

代わりにxmlファイルでTabHostを宣言しますか

<android.support.v4.app.FragmentTabHost ...  

?

このエラーは、コンパイラが TabHost を見つけようとしましたが、FragmentTabHost を見つけたために発生します。

編集:

申し訳ありませんが、TabHost を xml ファイルで定義したと思っていましたが、findViewById で直接定義しています。

インポートを見てみましょう。どの R ファイルをインポートしますか? 標準の android.R ファイルではなく、特定のサポート ライブラリ R で定義されている android.R.tabhost xml ファイル (FragmentTabHost に変換できる) を取得しようとしています。

別の編集:

正しいRファイルをインポートした場合。私の最初の質問を参照したいと思います。

を交換していただけますか

タブホスト

あなたのxmlファイルの一部

android.support.v4.app.FragmentTabHost

于 2013-07-29T15:02:52.063 に答える