in my Android application I'm using viewpager and FragmentActivity . But it does not show the content. My FragmentActivity is
public class DropPickup extends FragmentActivity {
private DPAdapter myAdapter;
private ViewPager myPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myAdapter = new DPAdapter(getSupportFragmentManager());
myPager = (ViewPager) findViewById(R.id.dp_viewpager);
myPager.setAdapter(myAdapter);
}
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new PickUpFragment();
case 1:
return new DropFragment();
default:
return null;
}
}
}
}
and my page adapter is as below.
public DPAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
switch (position) {
case 0:
return new PickUpFragment();
case 1:
return new DropFragment();
default:
return null;
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}
}
this is one of my fragments
public class DropFragment extends Fragment {
TableLayout DTbl;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View viewx=inflater.inflate(R.layout.fragment_drop, container, false);
DTbl = (TableLayout) viewx.findViewById(R.id.dpp_tbl_prs_tbl);
//return super.onCreateView(inflater, container, savedInstanceState);
return viewx;
}
}
this is my layout view pager
<android.support.v4.view.ViewPager
android:id="@+id/dp_viewpager"
android:layout_width="wrap_content"
android:layout_height="fill_parent" />
So can someone help me to figure out the problem. Thank you !!!!
What is the purpose of writing two separate classes MyAdapter & DPAdapter when they are same so, drop one of them. Otherwise your code is looking fine.
Update
Use this code and keep MyAdapter class
myAdapter = new MyAdapter(getSupportFragmentManager());
myPager = (ViewPager) findViewById(R.id.dp_viewpager);
myPager.setAdapter(myAdapter);
Here is my code how I use viewpager
public class Book extends FragmentActivity {
private static final String[] CONTENT = new String[] { "A", "B", "C"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.book);
FragmentStatePagerAdapter adapter = new MyFragmentPageAdapter(getSupportFragmentManager());
ViewPager pager = (ViewPager)findViewById(R.id.pager);
pager.setAdapter(adapter);
pager.setCurrentItem(CONTENT.length);
}
class MyFragmentPageAdapter extends FragmentStatePagerAdapter {
public MyFragmentPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if(CONTENT[position].equals("A"))
{
return Page1.newInstance(CONTENT[position]);
} else{
return Page2.newInstance(CONTENT[position]);
}
@Override
public int getCount() {
return CONTENT.length;
}
}
}
where Page1 and Page2 are fragments
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.