java.lang.ClassCastException:将一个对象转换为其父对象

时间:2014-06-10 18:53:30

标签: java android layout android-fragmentactivity

我是一名IOS编码员,但我正在尝试学习一点Android,但我遇到了问题。

我有以下课程:

package com.example.fragmenttabhostdemo;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Tab1 extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        return inflater.inflate(R.layout.tab1, container, false);
    }
}

当我尝试运行它时,控制台说:

java.lang.ClassCastException: com.example.fragmenttabhostdemo.Tab1 cannot be cast to android.support.v4.app.Fragment

我做错了什么想法?我认为,当我尝试为我的Android应用程序布局制作片段活动并向主机添加一些选项卡时,会出现问题:

protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

     tabHost = (FragmentTabHost) findViewById(R.id.tabhost);

     tabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);

     tabHost.addTab(tabHost.newTabSpec("Tab1").setIndicator("Lengueta 1"), Tab1.class, null);
     tabHost.addTab(tabHost.newTabSpec("Tab2").setIndicator("Lengueta 2"),
                           Tab2.class, null);
     tabHost.addTab(tabHost.newTabSpec("Tab3").setIndicator("Lengueta 3"),
                           Tab3.class, null);
   }

所以,我不知道自己做错了什么。 任何其他想法都可以轻松获得标签布局,我无法做到。

Pd积。我试图按照本教程进行操作: http://www.androidcurso.com/index.php/tutoriales-android-basico/32-unidad-2-diseno-de-la-interfaz-de-usuario-vistas-y-layouts/452-fragmenttabhost

2 个答案:

答案 0 :(得分:5)

你的提示就在这里:

android.support.v4.app.Fragment

您正在向支持Fragment投放常规Fragment。这很令人困惑,因为它们是两个具有相同名称的类,但位于不同的包中。基本上,如果您正在使用支持库,则应该坚持使用所有支持类型。考虑到这一点,在您的Tab1课程中,在导入语句中进行以下更改。

//import android.app.Fragment;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

答案 1 :(得分:2)

它表示无法转换为android.support.v4.app.Fragment。在Fragment文件中,您导入了android.app.Fragment。我的猜测是你的进口已关闭。