-1

编辑 :

在建议改用 TabStrip 之后,我一直在寻找它,我决定使用它而不是尝试这样做。所以问题仍然是相同但不同的代码:在我的导航抽屉中,我有一个开关,它给出了Fragment 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:

公共类 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 因为我试图在导航抽屉的片段之一中实现标签滑动视图:

public class TodayFragment extends Fragment implements ActionBar.TabListener {}

问题出现在代码的第一部分,它说“类型不匹配:无法从 TodayFragment 转换为 Fragment”

我对Java不太了解,而且我被困住了。

我希望有人能帮忙

提前致谢

4

2 回答 2

0

片段中选项卡的一种更好的方法是结合使用ViewPagerPagerTabStrip按照http://blog.pboos.ch/android-pagertabstrip-viewpager/中的示例

请记住,ViewPager它来自支持库,因此您还必须使用支持库中的片段。


原始(不正确)答案:

您需要将您的TodayFragment转换为Fragment

fragment = (Fragment) new TodayFragment();
于 2014-05-04T18:55:21.013 回答
0

正如 Myanimal 在他的回答评论中所说,我认为您已经导入了不同类别的Fragment.

  • android.app.Fragment
  • 还有这个android.support.v4.app.Fragment

ActionBar.TabListener您实施或正在使用的TabStrip不是问题的原因。

当一个Aextends/implements成为一个B类时,A该类(子类)具有的"same"属性为B(基类):

public class A extends B ==> B b = new A(); 是可能的

因此,请尝试删除所有您的importsCtrlShiftO组织导入。然后选择了同类别的Fragments。问题可能会消失。

于 2014-05-04T21:14:04.923 回答