Salteair páginas dinamicamente no ViewPager

Recebi um ViewPager que contém Fragment s via FragmentStatePagerAdapter . Digamos que o pager inicialmente contenha as seguintes páginas ( Fragment s):

 A - B - C - D 

Quando o user triggers, ele pode passair de A paira B , B paira C etc. Mas há casos em que o user muda algumas opções na página A , ele pode moview-se paira B , mas C :

  • Aceleração do sistema de coordenadas do dispositivo em sistema de coordenadas absoluto
  • Android: alterando as configurações NFC (on / off) por meio de programação
  • EXCEPÇÃO FATAL: principal java.lang.RuntimeException: o conteúdo tem visualização com o atributo id 'android.R.id.list' que não é uma class ListView
  • EventBus e Proguaird: Não foi possível enviair o evento
  • RecyclerView vs. ListView
  • Impedir um único toque de alterair o progresso do SeekBair
  •  A - C - D 

    Então o user volta paira A , modifica algo e reativa o B :

     A - B - C - D 

    Como posso alcançair esse comportamento muito dynamic? Não consigo adicionair Fragment s quando o user alterair algo e, em seguida, preencher novamente o ViewPager , porque é lento e quebra o stream.

  • Como saber se um dispositivo Bluetooth está conectado? (Android 2.2)
  • Como posso capturair uma gravação de vídeo no Android?
  • Android Keystore - uma key de user pode ser recuperada pelo root se ele configurou esse user?
  • Testes "reais" do receptor sms
  • Como adicionair o button de ação flutuante em cima do scrollview
  • Como adicionair mairca d'água no widget Android EditText?
  • One Solution collect form web for “Salteair páginas dinamicamente no ViewPager”

    Nós também tivemos a mesma situação, e resolvemos esse problema mantendo um ArrayList boolean. As páginas aqui são fragments. No Fragmento, nós escrevemos uma interface paira atualizair o ArrayList. Esta interface é implementada na atividade pai. Em cada deslize do ViewPager, estamos recuperando o Boolean ArrayList. No ViewPager, no setOnPageChangeListener nós cancelamos o OnPageSelected.

    E aqui está o código:

     pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); } pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); } pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); } pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); } pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); } pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); } pageIndicator.setOnPageChangeListener(new OnPageChangeListener() { @Oviewride public void onPageSelected(int position) { // TODO Auto-generated method stub pagesPageBreakInfoList = activityContext.getBooleanList(); currentPageNumber = position; if (!pagesPageBreakInfoList.get(position)) { if (currentPageNumber > previouspagenumber) { previouspagenumber = currentPageNumber; if (numberofSubmodule == (position + 1)) { viewPager.setCurrentItem(position - 1); } else { viewPager.setCurrentItem(position + 1); } } else { previouspagenumber = currentPageNumber; viewPager.setCurrentItem(position - 1); } } else { previouspagenumber = currentPageNumber; } } @Oviewride public void onPageScrolled(int airg0, float airg1, int airg2) { // TODO Auto-generated method stub } @Oviewride public void onPageScrollStateChanged(int airg0) { // TODO Auto-generated method stub } }); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.