Java com.example.main无法转换为android.support.v4.app.Fragment
只需遵循上的基本android文档(顶部示例-活动中的FragmentTabHost),并收到以下错误: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 奇怪的是,我已经正确地遵循了一
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遗憾的是,没有,但根据我的建议,您将需要重新设计仅用于容器的活动,并将所有可替换视图放在选项卡中。这样您就有了更大的灵活性:)