显示错误参数的片段

时间:2018-10-06 21:14:09

标签: android android-fragments

我有一个使用viewpager和带有选项卡的片段的活动。我将数据从活动传递到片段,但是对于特定选项卡,它始终显示错误的数据。我有一个片段,它应该根据通过分发包传递的参数来查询数据。

SET NAMES utf8mb4;

然后我像这样在viewpager上传递此函数:

UPDATE

最后我像这样传递了参数:

private Fragment createFragment(String title){
    HomeFragment fragment = new HomeFragment();
    Bundle bundle = new Bundle();
    bundle.putString("category",title);
    fragment.setArguments(bundle);
    return fragment;

}

问题是当我在选项卡1上时,它返回项2。但是当我访问所有选项卡时,它开始返回正确的项,即在选项卡1上时项1。

问题出在哪里?

编辑:

ViewPagerAdapter:

ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(createFragment("Item 1"),"Tab 1");
    adapter.addFragment(createFragment("Item 2"),"Tab 2");
    adapter.addFragment(createFragment("Item 3"),"Tab 3");
    adapter.addFragment(createFragment("Item 4"),"Tab 4");
    adapter.addFragment(createFragment("Item 5"),"Tab 5");

}

1 个答案:

答案 0 :(得分:0)

也许您可以创建适配器类,并确保在正确的位置传递正确的片段。适配器可能以实例化片段的方式将片段添加到错误的位置。

class ViewPagerAdapter extends FragmentPagerAdapter {
        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
           case 1: return createFragment("Item 1"),"Tab 1");
           case 2: return createFragment("Item 2"),"Tab 2");
           case 3: return createFragment("Item 3"),"Tab 3");
           case 4: return createFragment("Item 4"),"Tab 4");
           case 5: return createFragment("Item 5"),"Tab 5");
        }
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}