0

I have two fragments (Same class- PlayerFragment) and I set the ViewPager with this method:

private void setupViewPager(ViewPager viewPager) {
        FragmentManager fManager = getSupportFragmentManager();
        ViewPagerAdapter adapter = new ViewPagerAdapter(fManager);

        Bundle args1 = new Bundle();
        args1.putInt("Id",1);
        PlayerFragment pf1 = new PlayerFragment();
        pf1.setArguments(args1);
        adapter.addFrag(pf1, "Players 1");

        Bundle args2 = new Bundle();
        args2.putInt("Id",2);
        PlayerFragment pf2 = new PlayerFragment();
        pf2.setArguments(args2);
        adapter.addFrag(pf2, "Players 2");

        viewPager.setAdapter(adapter);
    }

I have two tabs but only the first tab shows me content, the other tab is empty. And the first tabs shows me the contentent of the second one.

static class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFrag(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

In the activity where I use the fragments I have this code:

final ViewPager viewPager = (ViewPager) findViewById(R.id.vpTeam);
        setupViewPager(viewPager);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabsTeam);
        tabLayout.setupWithViewPager(viewPager);

Thanks!

Edit: This is the PlayerFragment

public class PlayerFragment extends Fragment {

private ProgressDialog progressDialog;
private List<Player> myPlayers = new ArrayList<>();
private int myTeamId = 14;

public PlayerFragment(){

}

public static PlayerFragment newInstance(int someInt) {
    PlayerFragment myFragment = new PlayerFragment();

    Bundle args = new Bundle();
    args.putInt("TeamId", someInt);
    myFragment.setArguments(args);

    return myFragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    Bundle args = getArguments();
    if(args!=null) {
        myTeamId = args.getInt("TeamId");
    }
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_player, container, false);
    new BackgroundAsyncTask().execute();
    return view;
}

}

Federico Blumetto
  • 967
  • 1
  • 7
  • 12

1 Answers1

0

Can you post the code of PlayerFragment? I'm pretty sure that the error is that you have the variables in that class as static. Also try to use the "new instance()" way for creating fragments --> Best practice for instantiating a new Android Fragment

Community
  • 1
  • 1
Damia Fuentes
  • 5,308
  • 6
  • 33
  • 65