我遇到了查看分页器的问题。视图分页器最初工作正常,适配器调用getItem(int pos)
方法,页面得到正确设置。
现在当我尝试替换视图寻呼机中的页面时出现问题。页面碎片被替换但显示空白屏幕。
我不知道下一步该做什么。
继承代码`
public class BaseActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] mActions;
private static final int NUM_PAGES = 2;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.common_layout);
// Instantiate a ViewPager and a PagerAdapter.
fragmentManager = getSupportFragmentManager();
mPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mTitle = mDrawerTitle = getTitle();
mActions = getResources().getStringArray(R.array.actions);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
// set up the drawer's list view with items and pclick listener
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mActions));
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
}
// The click listener for ListView in the navigation drawer
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
selectItem(position);
}
}
private void selectItem(int position) {
switch (position) {
case 0:
replaceFragment(new DashFragment());
break;
case 1:
replaceFragment(new SearchFragment());
break;
case 2:
replaceFragment(new UploadFragment());
break;
default:
replaceFragment(new DashFragment());
break;
}
mDrawerList.setItemChecked(position, true);
setTitle(mActions[position]);
Toast.makeText(this, "Title is=" + getTitle(), 1).show();
mDrawerLayout.closeDrawer(mDrawerList);
}
private void replaceFragment(Fragment newContentFragment) {
// TODO Auto-generated method stub
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.replace(R.id.pager, newContentFragment);
fragmentTransaction.addToBackStack(String.valueOf(newContentFragment
.getId()));
fragmentTransaction.commit();
}
@Override
public void onBackPressed() {
if (mPager.getCurrentItem() == 0) {
// If the user is currently looking at the first step, allow the
// system to handle the
// Back button. This calls finish() on this activity and pops the
// back stack.
super.onBackPressed();
} else {
// Otherwise, select the previous step.
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
}
}
private class ScreenSlidePagerAdapter extends FragmentPagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new DashFragment();
case 1:
return new SearchFragment();
default:
return new DashFragment();
}
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
}
这是我的common_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="true"
android:focusableInTouchMode="true" />
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#111"
android:choiceMode="singleChoice" />
</android.support.v4.widget.DrawerLayout>