我有一个使用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");
}
答案 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;
}
}