带有视图寻呼机的标签片段 - android

时间:2014-10-30 09:50:18

标签: android android-fragments tabs android-viewpager

我在Android应用程序的屏幕左侧有一个静态菜单。当我点击左侧菜单中的某个项目时,fragment会出现在它旁边。

左侧菜单上的一个项目是课程。在课程fragment中包含viewpager来观看或收听课程。您可以通过单击或单击标题栏上的相应选项卡导航到这三个选项之一。一切正常。

但是,如果我点击左侧菜单栏上的另一个项目并导航回课程部分,它就会混乱。再次调用onCreateView(),因此再次将标签添加到标题栏和viewpager。我尝试删除onPause()方法中的所有标签,并删除viewpager中的所有视图。不再添加选项卡,但屏幕上的页面现在为空白。

非常感谢任何帮助。

这里是extends FragmentPagerAdapter

的班级
public class TabsPagerAdapter extends FragmentPagerAdapter {

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);

    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            // Top Rated fragment activity
            return new WatchCourseFrag();
        case 1:
            // Games fragment activity
            return new ReadCourseFrag();
        case 2:
            // Movies fragment activity
            return new ListenCourseFrag();
        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 3;
    }

}

这里是标签fragment类:

public class TabFrag2 extends Fragment implements ActionBar.TabListener {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    // Tab titles
    private String[] tabs = { "Watch", "Read", "Listen" };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pager, container, false);

        // Initilization
        viewPager = (ViewPager) view.findViewById(R.id.pager);
        actionBar = ((HomeScreenTablet) getActivity()).getSupportActionBar();
        mAdapter = new TabsPagerAdapter(getFragmentManager());

        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Adding Tabs
        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
        viewPager.setOffscreenPageLimit(3);
        return view;
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }

    public void onPause() {
        super.onPause();
        viewPager.removeAllViews();
        viewPager.removeAllViewsInLayout();
        actionBar.removeAllTabs();

    }
}

1 个答案:

答案 0 :(得分:0)

找到答案: 改变了" TabsPagerAdapter扩展了FragmentPagerAdapter" to" TabsPagerAdapter扩展了FragmentStatePagerAdapter"