向viewpager添加新页时显示为空白



我被困在一个问题与视图分页。视图分页器最初工作良好,适配器调用getItem(int pos)方法,页面得到正确设置。现在,当我试图替换视图页中的页面时,问题出现了。页面碎片被替换,但显示一个空白的屏幕。我不知道下一步该做什么。

尝试调用' notifyDatasetChanged() ',但仍然没有效果。

下面是代码 '

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>

这是你的问题的解决方法,它们也有很好的解释。

首先

第二

keep it DRY:)

如果你需要进一步的解释,请告诉我。