查看寻呼机不同的结果

时间:2016-03-07 13:58:48

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

我在我的应用的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创建实例,当我转到{{1}时它为second tab创建实例。 现在在我的第二个选项卡中,当我对数据库进行更改并尝试在第三个选项卡中进行更改时,不会反映,因为在选择第二个选项卡时它已经创建了case 2的实例。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

阅读this