编辑:
在建议使用TabStrip后,我一直在寻找它,我决定使用它而不是我试图做的。
所以问题仍然是相同但不同的代码:
在我的导航抽屉里,我有一个开关,它给出Fragment fragment
一个片段值,当我用TodayFragment
扩展我的FragmentActivity
时,我无法进行最后一次分配,因为它会抛出一个类型不匹配错误。
所以这里是代码的一部分(TodayFragment现在是TodayFrag,因为我正在尝试不删除类的东西):
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new TimetablesFragment();
break;
case 2:
fragment = new SubjectsFragment();
break;
case 3:
fragment = new TodayFrag();
break;
case 4:
fragment = new Others2Fragment();
break;
default:
break;
}
现在我有来自http://blog.pboos.ch/android-pagertabstrip-viewpager/班级的PagerTabStrib:
public class TodayFrag扩展了FragmentActivity {}
原始问题:
我的导航抽屉完成了,在某一点上,我切换一个位置变量来确定我需要在视图中设置哪个片段:
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new OneFragment();
break;
case 2:
fragment = new TwoFragment();
break;
case 3:
fragment = new TodayFragment();
break;
case 4:
fragment = new Others2Fragment();
break;
default:
break;
}
除了TodayFragment()之外,所有片段都是仅扩展Fragment的类。 TodayFragment()扩展了Fragment并实现了ActionBar.TabListener,因为我正试图在Navigation抽屉的一个片段中实现一个tab可滑动的视图:
public class TodayFragment extends Fragment implements ActionBar.TabListener {}
问题出现在代码的第一部分,它说“类型不匹配:无法从TodayFragment转换为Fragment”
我不太了解Java,而且我被卡住了。
我希望有人可以提供帮助
提前致谢
答案 0 :(得分:0)
片段中制表符的更好方法是根据http://blog.pboos.ch/android-pagertabstrip-viewpager/上的示例使用ViewPager
和PagerTabStrip
的组合
请记住,ViewPager
来自支持库,因此您还必须使用支持库中的片段。
原始(不正确)答案:
您需要将TodayFragment
投射到Fragment
:
fragment = (Fragment) new TodayFragment();
答案 1 :(得分:0)
正如Myanimal在回答中所说的那样,我认为你导入了不同类别的Fragment
。
android.app.Fragment
android.support.v4.app.Fragment
您实施的ActionBar.TabListener
或您使用的TabStrip
不是问题的原因。
当A
类extends/implements
和B
类时,A
类(子类)的"same"
属性为B
(基类):
public class A extends B
==> B b = new A();
是可能的 。
因此,请尝试删除所有imports
并执行 Ctrl Shift O 以组织导入。然后选择相同类别的碎片。这个问题可能会消失。