ViewPager retomando Fragmentos antigos na rotação da tela

estou usandoViewPager eFragmentStatePagerAdapter para mostrar fragmento. Inicialmente, há 2 fragmentos adicionados Fragmento1 e Fragmento2 e o terceiro fragmento3 é adicionado na segunda posição após a resposta reciever do servidor. Então, depois que todas as páginas forem adicionadas, isso deve ser uma sequência de fragmentos no ViewPager -> Fragment1, Fragment3, Fragment2.

O problema é depois Fragment1 e Fragment3 são adicionados e app está fazendo a chamada do servidor antes de adicionar o 3rd Fragment na 2ª posição se eu fizer a rotação da tela várias vezes depois que o terceiro fragmento for adicionado ele ainda mostra a cópia antiga do Fragment2 que estava na 2ª posição inicialmente na 2ª posição e 3ª posição tem nova cópia do Fragment2. Então Fragment3 doest aparece no ViewPager. Seqüência após adicionar o terceiro fragmento -> Fragment1, cópia antiga de Fragment2, New Fragment2.

Eu estou dominandoonSaveInstanceState e chamandosuper.onSaveInstanceState na minha atividade.

Também tentei retornarPOSITION_NONE degetItemPosition. Eu li em algum lugar que ViewPager salvar cópias do fragmento. Além disso, através da depuração, verifiquei se o ViewPager continha 2 cópias do Fragment2 quando o problema foi reproduzido, emboragetItem doFragmentStatePagerAdapter Retornou diferentes fragmentos para cada posição, mas ainda na segunda posição estava mostrando fragmento antigo. Para fins de teste emgetItem Retornei Fragment1 para todas as posições para que todas as 3 páginas fossem iguais, mas mesmo depois disso na segunda posição estava mostrando uma cópia antiga do Fragment2 quando reproduzi o problema com as etapas mencionadas acima.

Então, como limparViewPager para que não salve fragmentos antigos. Como atualizar o ViewPager para que ele não retenha a cópia antiga com fragmentos. Eu acho que o problema é com onSaveInstanceState, mas eu preciso disso. Como posso excluir?ViewPager quando as vistas são salvas emonSaveInstanceState. eu tenteimViewPager.setSaveEnabled(false) mas é preciso muita memória.

Eu descobri que o problema éinstantiateItem O método do adaptador não chama getItem devido a qual fragmento antigo é retornado.

Abaixo está o código da solução

Código:

 @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Object obj = super.instantiateItem(container, position);
            Fragment fragment = mFragments.get(position);

            if((obj!=null && fragment!=null) && !(obj.getClass().getSimpleName().equals(fragment.clss.getSimpleName()))){
                destroyItem(container, position, obj);
                return super.instantiateItem(container, position);
            }else{
                return obj;
            }
        }