【问题标题】:View pager different results查看寻呼机不同的结果
【发布时间】:2016-03-07 13:58:48
【问题描述】:

我在我的应用程序的MainActivity 中使用带有 3 个选项卡的视图寻呼机来显示网格图像。对于所有 3 个选项卡,我都有一个 MovieFragment,并且每次更改选项卡时,我都使用 FragmentsPagerAdapter 创建 MovieFragment 的新实例。

//FragmentsPagerAdapter method
@Override
public Fragment getItem(int position) {
    switch (position){
        case 0: return MoviesFragment.newInstance(buildUrl(Utility.POPULAR_URL));
        case 1: return MoviesFragment.newInstance(buildUrl(Utility.RATED_URL));
        case 2: return MoviesFragment.newInstance("favorite");
        default: return null;
    }
}

//Fragment method
public static MoviesFragment newInstance(String uri){
    MoviesFragment fragment = new MoviesFragment();
    Bundle bundle = new Bundle();
    bundle.putString("fragment", uri);
    fragment.setArguments(bundle);
    return fragment;
}

现在我在我的应用程序中得到了不同的结果,所以我调试了这个方法,我发现它在选择选项卡之前调用方法,即当我打开应用程序时,它会为 case 0 and case 1 创建实例,当我转到 second tab 时它会创建实例为case 2。 现在在我的第二个选项卡中,当我对数据库进行更改并尝试在第三个选项卡中获取它们时,更改不会反映出来,因为它在选择第二个选项卡时已经创建了 third tab 的实例。 我该如何解决这个问题?

【问题讨论】:

标签: java android android-fragments tabs android-viewpager


【解决方案1】:

@Sahil 这是因为在 android 中 ViewPager 只跟踪前一页和下一页。因此,当您初始化 viewPager 时,它会自动创建前 2 页并为第一个两个选项卡调用 MoviesFragment。一旦你开始滚动浏览,它就会开始只跟踪前一页和下一页。

阅读this

【讨论】:

  • 我将该限制更改为 0,但行为仍然相同
  • @Sahil 你可以通过OnPageChangeListener定义一个函数来处理你的数据库函数,因为android总是会调用紧接的下一页和上一页。
猜你喜欢
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2016-05-28
  • 1970-01-01
相关资源
最近更新 更多