In the MainActivity that will host the fragments you need to create a fragment adapter class in which in getItem() method you will return a new instance of the fragment. Take a look at this example:
public class MainActivity extends FragmentActivity {
static int numberOfPages = 2;
ViewPager myViewPager;
MyFragmentPagerAdapter myFragmentPagerAdapter;
String text = "test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
myViewPager = (ViewPager) findViewById(R.id.view_pager);
myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
myViewPager.setAdapter(myFragmentPagerAdapter);
}
// Adapters
private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
return PageFragment.newInstance(text);
}
@Override
public int getCount() {
return numberOfPages;
}
}
}
// Fragment class
public class PageFragment extends Fragment {
TextView tv;
public static PageFragment newInstance(String text) {
PageFragment pageFragment = new PageFragment();
Bundle bundle = new Bundle();
bundle.putString("test", text);
pageFragment.setArguments(bundle);
return pageFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
tv = (TextView) view.findViewById(R.id.tv);
tv.setText(getArguments().getString("test");
return view;
}