Java com.example.main无法转换为android.support.v4.app.Fragment

Java com.example.main无法转换为android.support.v4.app.Fragment,java,android,android-fragments,android-tabhost,manifest,Java,Android,Android Fragments,Android Tabhost,Manifest,只需遵循上的基本android文档(顶部示例-活动中的FragmentTabHost),并收到以下错误: 10-21 02:30:07.409 26265-26265/com.example E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.ClassCastException: com.example.Main cannot be cast to android.support.v4.app.Fragment 奇怪的是,我已经正确地遵循了一

只需遵循上的基本android文档(顶部示例-活动中的FragmentTabHost),并收到以下错误:

10-21 02:30:07.409  26265-26265/com.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: com.example.Main cannot be cast to android.support.v4.app.Fragment
奇怪的是,我已经正确地遵循了一切,并安装了必要的软件包

Main.java

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;

public class Main extends FragmentActivity {
    // Fragment TabHost as mTabHost
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),
                Main.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator("Tab2"),
                ListNewItem.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator("Tab3"),
                Favourites.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("tab4").setIndicator("Tab4"),
                Notifications.class, null);
    }
}
main.xml

<activity android:name=".Main"
        android:label="@string/main"
        android:uiOptions="splitActionBarWhenNarrow" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
</activity>
注意:Intellij在尝试显示预览时在侧窗中显示以下内容:

渲染期间引发的渲染问题异常:没有已知的 标记空值

可能是图书馆的臭虫

<android.support.v4.app.FragmentTabHost
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

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

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

        <FrameLayout
                android:id="@+id/realtabcontent"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1" />
    </LinearLayout>
</android.support.v4.app.FragmentTabHost>
有人知道为什么我在渲染和类转换方面都有问题吗

正如您在中看到的,我们需要将Fragment类而不是FragmentActivity传递给addTab()函数

在这里,您正在传递
Main.Class

mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1"),
                Main.class, null);
哪一个是FragmentActivity类而不是片段

public class Main extends FragmentActivity 
看到这部分了吗

mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                FragmentStackSupport.CountingFragment.class, null);
他们正在传递FragmentStackSupport.CountingFragment.class,它是一个片段

public class Main extends FragmentActivity 
为了让您更清楚地看到FragmentStackSupport.CountingFragment的android源代码的grepcode链接->


这将解释为什么您会得到java.lang.ClassCastException,因为您传递了错误类型的类。

set tag..对于选项卡-(fragment),我使用的是最上面的示例,“FragmentTabHost in a Activity”,我传递的是片段,Notifications.class等名称不正确。我会让你看看它的样子like@newb也许你们并没有注意到,但你们正在通过Main。同学们,看看我更新的答案:)哦,当然!谢谢,问题是,我想用这个Main.class活动(实际上是主页)作为第一个选项卡(就像instagram的一样),这样我就可以点击并返回主页。我是否需要暂时将其作为一个片段传递,以便可以返回此活动screen@newb遗憾的是,没有,但根据我的建议,您将需要重新设计仅用于容器的活动,并将所有可替换视图放在选项卡中。这样您就有了更大的灵活性:)