Mam dość nieokreślony błąd w aplikacji na Androida, nad którą pracuję. Mam fragment, który z kolei zawiera ViewPagera, który jest wspierany przez FragmentStatePagerAdapter. Pager zawiera dwa fragmenty.Nullpointerexception na dispatchDraw z ViewPager w zagnieżdżonym fragmencie z PageTransformer
Za każdym razem, gdy próbuję dodać PageTransformer (używając tych z witryny dla programistów Androida: http://developer.android.com/training/animation/screen-slide.html), wszystko działa poprawnie, dopóki nie spróbuję odejść od fragmentu zawierającego widok strony (backpress lub zwykły). Błąd, który otrzymuję, jest następujący. Nie mogę naprawdę wyśledzić, co powoduje to x_x. Fragment kodu konstrukcji pagera na dole. budowa
Process: edu.utcs.android, PID: 11728
java.lang.NullPointerException
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2946)
at android.view.View.draw(View.java:14476)
at android.support.v4.view.ViewPager.draw(ViewPager.java:2171)
at android.view.View.getDisplayList(View.java:13370)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14476)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at android.view.View.getDisplayList(View.java:13370)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.getDisplayList(View.java:13365)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2959)
at android.view.View.getDisplayList(View.java:13365)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:870)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.getDisplayList(View.java:13365)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.getDisplayList(View.java:13365)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14476)
at com.android.internal.widget.ActionBarOverlayLayout.draw(ActionBarOverlayLayout.java:381)
at android.view.View.getDisplayList(View.java:13370)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.draw(View.java:14190)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14476)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2324)
at android.view.View.getDisplayList(View.java:13370)
at android.view.View.getDisplayList(View.java:13412)
at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1577)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2410)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2282)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1912)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1022)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5708)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5083)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
at de.robv.andro
Pager:
mAdapter = new LabPagerAdapter(getChildFragmentManager());
mPager.setAdapter(mAdapter);
mPager.setPageTransformer(false, new ZoomOutPageTransformer());
mPager.setCurrentItem(mLabPosition);
Próbowałem rozmieszczanie kilka linii w przypadku był to jakiś rodzaj wyścigu, a także próbowali odwrócenia animacji („false” logiczną na 3 linii), ale bez powodzenia.
EDIT
Z niektórych prób i błędów, a niektóre pomoc user2152081, Poszedłem z hacky obejście nadrzędnymi klasę ViewPager z własną rękę, i owijając super połączenie w losowaniu() w blok try/catch.
@Override
public void draw(Canvas canvas) {
try {
super.draw(canvas);
} catch (NullPointerException e) {
Log.d("ViewPager", "Nullpointer skipped");
}
}
Dzięki @pandanomic że udało się rozwiązać moją sprawę, jak również. – zIronManBox
Masz ten sam problem, jeśli zastąpiłeś getChildFragmentManager() przez getActivity.getFragmentManager(). Napotkałem ten sam problem, jeśli użyłem getChildFragmentManager(), ale znika, jeśli używam actVitiy fragmentManager. Nie mam pojęcia, czy to pomoże, ale rozwiązał mój problem. –
@ JM.Pascal Próbowałem tego, ale spowodowało to inne problemy z powodu ponownego dodania tych fragmentów strony podglądu, jeśli wyszedłem i wróciłem do tego fragmentu. Zagnieżdżony widok podglądu powinien pobrać menedżer potomka, a nie zwykły –