我是一名 IOS 编码员,但我正在尝试学习一点点 android,但我遇到了问题。
我有以下类(class):
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 应用程序布局制作 fragment Activity 并向主机添加一些选项卡时,就会出现问题:
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
最佳答案
你的提示是这部分:
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;
关于java.lang.ClassCastException : casting an object, 给他的 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148776/