如何在选择选项卡时重新加载片段?

时间:2015-08-26 10:43:01

标签: android

我创建了一个简单的应用程序,其中包含3个选项卡TAB1,TAB2,TAB3 当我选择TAB1相邻的TAB2后加载到内存中之后,当我按下TAB2或TAB3时,我的TAB2上的内容将无法刷新。

如果我点击TAB1-> TAB2-> TAB1-> TAB2序列中的tab,我的片段将不会刷新

每次选择标签时,我都要加载选定的标签。

我使用以下代码在选定的标签上加载片段

#sidebar-wrapper {
  margin-left: -320px;
  position: absolute;
  overflow-y: visible;
  overflow-x: hidden;
  top: 60px;
  bottom: 10px;
  transition: all 0.4s ease 0s;
}
.dropdown-menu-right {
  right: -272px;
  left: auto;
  top: -200px;
}

2 个答案:

答案 0 :(得分:2)

Your_Pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            if (position == WHATEVER) {
                //do your Staff

            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

您可以访问此处获取更多信息

  

http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html

答案 1 :(得分:1)

FragmentPagerAdapter: FragmentPagerAdapter将整个片段存储在内存中,如果在ViewPager中使用了大量片段,则会增加内存开销。

FragmentStatePagerAdapter: FragmentStatePagerAdapter仅存储片段的savedInstanceState,并在失去焦点时销毁所有片段。因此,当我们必须使用动态片段(如具有小部件的片段)时,应使用FragmentStatePagerAdapter,因为它们的数据可以存储在savedInstanceState中

使用案例: 当我们需要将整个片段存储在内存中时,应该使用FragmentPagerAdapter。当我说整个片段保存在内存中意味着,它的实例不会被破坏并且会产生内存开销。因此,建议仅在ViewPager的片段数较少时才使用FragmentPagerAdapter。如果碎片是静态的,那将会更好,因为它们不会有大量的实例存储的对象。

如果您使用Listview,recyclerview或任何繁重的工作,您应该使用'FragmentStatePagerAdapter'其他明智的'FragmentPagerAdapter'