我无法在TabLayout的最后一个片段中执行代码

时间:2016-01-21 17:01:34

标签: android android-viewpager android-tablayout

我的问题:我正在关注此链接“https://guides.codepath.com/android/google-play-style-tabs-using-tablayout”以开发滑动标签布局并获得以下内容:

Image

我按照指南操作,SlideTabLayout似乎工作得很好,但是。我意识到,如果我尝试制作一些代码,它在所有选项卡中都可以完美运行,但在最后一个选项卡中。我不得不说我总是使用相同的Fragment类,因此代码应该适用于所有选项卡。

例如,我在片段中放了一条Log.e消息,然后在所有选项卡中看到了消息,但是最后一个消息。

毕竟我尝试使用PagerTabStrip而不是TabLayout跟随另一个指南,我遇到了同样的问题。 有趣的部分是最后一页正确显示带有页码的TextView。

片段寻呼机适配器:

public static class MyPagerAdapter extends FragmentPagerAdapter {
    private static int NUM_ITEMS = 3;

    public MyPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    // Returns total number of pages
    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    // Returns the fragment to display for that page
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0: // Fragment # 0 - This will show FirstFragment
                return PageFragment.newInstance(0, "Page # 1");
            case 1: // Fragment # 0 - This will show FirstFragment different title
                return PageFragment.newInstance(1, "Page # 2");
            case 2: // Fragment # 1 - This will show SecondFragment
                return PageFragment.newInstance(2, "Page # 3");
            default:
                return null;
        }
    }

    // Returns the page title for the top indicator
    @Override
    public CharSequence getPageTitle(int position) {
        return "Page " + position;
    }

}

1 个答案:

答案 0 :(得分:1)

您会看到创建了两个片段,因为FragmentPagerAdapter的工作原理是为您提供2个制表符(2个片段)之间的平滑过渡。我猜你的代码可能是第一次运行,如果片段已经在内存中,它就不会运行。这就是Android对 FragmentPagerAdapter 的评价 "This version of the pager is best for use when there are a handful of typically more static fragments to be paged through, such as a set of tabs. The fragment of each page the user visits will be kept in memory, though its view hierarchy may be destroyed when not visible. This can result in using a significant amount of memory since fragment instances can hold on to an arbitrary amount of state"