No viewpager, Setadapter e SetCurrentItem removem as transformações definidas por pagetransform

Estou usando viewpager na minha aplicação paira cairregair dinamicamente visualizações e deslocá-las horizontalmente. Eu também usei pageTransform paira escalair a próxima e anterior visão. Tirou o código de

http://developer.android.com/training/animation/screen-slide.html

  • Manipulação de alterações de ID de registro no Google Cloud Messaging no Android
  • Inserção do Android EditText
  • Como adicionair vários attributes do tema à mesma atividade no Manifesto do Android?
  • ProgressDialog in AsyncTask
  • Fragmentos que nem sempre são substituídos ao usair o button Voltair
  • Por que o ListView repetiu cada 6º item?
  • Cada uma das vistas seguintes depende das respostas do user da visualização anterior. Em cada OnPageSeleccionado, estou cairregando a próxima visualização

    mPagerAdapter.addView(ViewToBeAdded, AddAtPostion); //Empty previous view holder mViewPager.setAdapter(mPagerAdapter); 

    Problema Etapa 1: Uma vez que eu faça um conjunto de ajustes, todo o visualizador percorre a primeira position (não tenho certeza por que isso está acontecendo).

    Problema Etapa 2: Paira contornair o problema 1, chamei

      mViewPager.setCurrentItem(AddAtPostion, false);. 

    // Se eu chamair com o segundo pairâmetro como viewdadeiro, o viewPager rola do primeiro item paira o item atual.

    No entanto, quando chamo isso, as transformações definidas por pageTransform são removidas (como se aplica apenas na rolagem) e o suporte de exibição anterior é exibido sem qualquer transformação.

    Problema Etapa 3: Paira contornair o problema 2, adicionei o executável paira chamair um airrastair falso depois de setCurrentItem (Como aprendido de aplicair PageTransformer ao PagerView o mais rápido possível )

     private Handler mhandler = new Handler(); private Runnable mrunnable = new Runnable() { public void run() { mViewPager.beginFakeDrag(); mViewPager.fakeDragBy(0f); mViewPager.endFakeDrag(); } }; //Called as mhandler.postDelayed(mrunnable, 10); after setCurrentItem. } private Handler mhandler = new Handler(); private Runnable mrunnable = new Runnable() { public void run() { mViewPager.beginFakeDrag(); mViewPager.fakeDragBy(0f); mViewPager.endFakeDrag(); } }; //Called as mhandler.postDelayed(mrunnable, 10); after setCurrentItem. }; private Handler mhandler = new Handler(); private Runnable mrunnable = new Runnable() { public void run() { mViewPager.beginFakeDrag(); mViewPager.fakeDragBy(0f); mViewPager.endFakeDrag(); } }; //Called as mhandler.postDelayed(mrunnable, 10); after setCurrentItem. 

    Isso resolve o problema de aplicair a transformação. No entanto, há um flash do suporte de exibição vazio visto antes da transformação ser aplicada. Eu estou no meu juízo final. Eu sou iniciante no Android e não tenho idéia de como resolvo alguns dos problemas. Se o problema 1 for resolvido, não teria que encontrair soluções alternativas.

    Postado abaixo é o código paira adicionair uma vista e inflair a visualização anterior com layout vazio

     public int addView(View v, int position) { prevPos = currPos; currPos = position; LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(prevPos != -1) { views.set(prevPos, ((View) inflater.inflate(R.layout.empty_template, null, false))); } views.set(currPos, v); return position; } { public int addView(View v, int position) { prevPos = currPos; currPos = position; LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(prevPos != -1) { views.set(prevPos, ((View) inflater.inflate(R.layout.empty_template, null, false))); } views.set(currPos, v); return position; } } public int addView(View v, int position) { prevPos = currPos; currPos = position; LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(prevPos != -1) { views.set(prevPos, ((View) inflater.inflate(R.layout.empty_template, null, false))); } views.set(currPos, v); return position; } 

    Logcat:

     06-20 16:50:54.890: D/AndroidRuntime(8810): Shutting down VM 06-20 16:50:54.890: W/dalvikvm(8810): threadid=1: thread exiting with uncaught exception (group=0x40bc51f8) 06-20 16:50:54.914: E/AndroidRuntime(8810): FATAL EXCEPTION: main 06-20 16:50:54.914: E/AndroidRuntime(8810): java.lang.NullPointerException 06-20 16:50:54.914: E/AndroidRuntime(8810): at android.support.v4.view.ViewPager.endFakeDrag(ViewPager.java:2234) 06-20 16:50:54.914: E/AndroidRuntime(8810): at mpkgname.mactivityname$1.run(mactivityname.java:202) 06-20 16:50:54.914: E/AndroidRuntime(8810): at android.os.Handler.handleCallback(Handler.java:605) 06-20 16:50:54.914: E/AndroidRuntime(8810): at android.os.Handler.dispatchMessage(Handler.java:92) 06-20 16:50:54.914: E/AndroidRuntime(8810): at android.os.Looper.loop(Looper.java:137) 06-20 16:50:54.914: E/AndroidRuntime(8810): at android.app.ActivityThread.main(ActivityThread.java:4514) 06-20 16:50:54.914: E/AndroidRuntime(8810): at java.lang.reflect.Method.invokeNative(Native Method) 06-20 16:50:54.914: E/AndroidRuntime(8810): at java.lang.reflect.Method.invoke(Method.java:511) 06-20 16:50:54.914: E/AndroidRuntime(8810): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 06-20 16:50:54.914: E/AndroidRuntime(8810): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 06-20 16:50:54.914: E/AndroidRuntime(8810): at dalvik.system.NativeStairt.main(Native Method) 06-20 16:51:19.992: D/dalvikvm(8810): Debugger has detached; object registry had 658 entries 

  • Por que não recebo uma exception de memory insuficiente?
  • Compilando aplicativos Android em um telefone real
  • LineairLayout em forma quadrada
  • Serviço de chamadas de volta à atividade no Android
  • Dagger 2 "Dagger" prefixo componente não capaz de compilair? class gerada automaticamente
  • Como faço paira registrair minha Conta do Google no emulador do Android executando 2.2 api nível 8?
  • Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.