У меня возникают некоторые проблемы, когда я пытаюсь заменить один Fragment на другой в ViewPager.
Текущая ситуация
У меня есть ViewPager с 3 страницами, каждый из которых является Fragment. На первой странице у меня есть ListView внутри ListFragment ( "FacturasFragment" ). Когда я нажимаю на элемент этого списка, я использую метод onListItemClick для обработки этого события.
Что я хочу
-  При нажатии элемента списка я хочу заменить 
ListFragment(содержит список счетов-фактур) другимFragment( "DetallesFacturaFragment" , содержит детали счета-фактуры). -  Когда я нахожусь в "DetallesFacturaFragment" и нажимаю Назад 
Button, должен вернуться кListFragment. -  Прокрутка между страницами не должна меняться 
Fragment, отображаемой в первом. Это, если я на первой странице с "DetallesFacturaFragment" и прокручивается на вторую страницу, при возврате к первому следует продолжить отображение "DetallesFacturaFragment" . 
код
FragmentActivity
public class TabsFacturasActivity extends SherlockFragmentActivity {
    private MyAdapter mAdapter;
    private ViewPager mPager;
    private PageIndicator mIndicator;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_pager);
        mAdapter = new MyAdapter(getSupportFragmentManager());
        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
        mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
    }
    private static class MyAdapter extends FragmentPagerAdapter {
        private String[] titles = { "VER FACTURAS", "VER CONSUMO", "INTRODUCIR LECTURA" };
        private final FragmentManager mFragmentManager;
        private Fragment mFragmentAtPos0;
        private Context context;
        public MyAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
            mFragmentManager = fragmentManager;
        }
        @Override
        public CharSequence getPageTitle(int position) {
            return titles[position];
        }
        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0: // Fragment # 0
                return new FacturasFragment();
            case 1: // Fragment # 1
                return new ConsumoFragment();
            case 2:// Fragment # 2
                return new LecturaFragment();
            }
            return null;
        }
        @Override
        public int getCount() {
            return titles.length;
        }
        @Override
        public int getItemPosition(Object object)
        {
            if (object instanceof FacturasFragment && mFragmentAtPos0 instanceof DetallesFacturaFragment)
                return POSITION_NONE;
            return POSITION_UNCHANGED;
        }
    }
}
ListFragment
public class FacturasFragment extends ListFragment {
    private ListView lista;
    private ArrayList<TuplaFacturaWS> facturas;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);    
    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.activity_facturas, container, false);
        facturas = myApplication.getFacturas();
        lista = (ListView) view.findViewById(id.list);
        MyAdapter myAdaptador = new MyAdapter(this, facturas);
        setListAdapter(myAdaptador);
        return view;
    }
    public void onListItemClick (ListView l, View v, int position, long id) {
        myApplication.setFacturaActual(position);
        mostrarDatosFactura();
    }
    private void mostrarDatosFactura() {
        final DetallesFacturaFragment fragment = new DetallesFacturaFragment();
        FragmentTransaction transaction = null;
        transaction = getFragmentManager().beginTransaction();
        transaction.replace(R.id.pager, fragment); //id of ViewPager
        transaction.addToBackStack(null);
        transaction.commit();
    }
    private class MyAdapter extends BaseAdapter {
        private final FacturasFragment actividad;
        private final ArrayList<TuplaFacturaWS> facturas;
        public MyAdapter(FacturasFragment facturasActivity, ArrayList<TuplaFacturaWS> facturas) {
            super();
            this.actividad = facturasActivity;
            this.facturas = facturas;
        }
        @Override
        public View getView(int position, View convertView, 
                ViewGroup parent) {
            LayoutInflater inflater = actividad.getLayoutInflater(null);
            View view = inflater.inflate(R.layout.list_row, null, true);
            //Set data to view
            return view;
        }
        @Override
        public int getCount() {
            return facturas.size();
        }
        @Override
        public Object getItem(int pos) {
            return facturas.get(pos);
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        private OnClickListener checkListener = new OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        };
    }
}
Фрагмент
public class DetallesFacturaFragment extends SherlockFragment {
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);    
    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.activity_factura, container, false);
        //Set data to view
        return view;
    }
}
В данный момент, когда я нажимаю элемент списка, на первой странице появляется белый вид. Я проверил и onCreateView метод "DetallesFacturaFragment" выполняется, но на этой странице ничего не отображается.
И в первый раз, когда я нажимаю элемент списка, он показывает белый экран. Но, вернувшись к списку, я должен дважды щелкнуть элемент списка, показывая белый экран.
Я занимался поиском и поиском нескольких вопросов, но не смог найти никого, кто решил бы с полным кодом.