android中的导航抽屉和页面查看器

时间:2014-05-04 18:37:15

标签: java android android-fragments navigation-drawer swipeview

编辑:

在建议使用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,而且我被卡住了。

我希望有人可以提供帮助

提前致谢

2 个答案:

答案 0 :(得分:0)

片段中制表符的更好方法是根据http://blog.pboos.ch/android-pagertabstrip-viewpager/上的示例使用ViewPagerPagerTabStrip的组合

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


原始(不正确)答案:

您需要将TodayFragment投射到Fragment

fragment = (Fragment) new TodayFragment();

答案 1 :(得分:0)

正如Myanimal在回答中所说的那样,我认为你导入了不同类别的Fragment

  • android.app.Fragment
  • 和此android.support.v4.app.Fragment

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

Aextends/implementsB类时,A类(子类)的"same"属性为B(基类):

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

因此,请尝试删除所有imports并执行 Ctrl Shift O 以组织导入。然后选择相同类别的碎片。这个问题可能会消失。