Android Viewpager内部碎片,按下后退按钮时崩溃

Android Viewpager内部碎片,按下后退按钮时崩溃,android,android-fragments,android-viewpager,android-animation,Android,Android Fragments,Android Viewpager,Android Animation,我在片段中有Viewpager。它工作得很好 当我为包含Viewpager的片段的开始和退出添加动画时,问题就开始了 transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right); 复制这个问题很容易需要滑动viewpager并立即按下后退按钮。 例外情况是: E/AndroidRuntime﹕ FATAL E

我在片段中有Viewpager。它工作得很好

当我为包含Viewpager的片段的开始和退出添加动画时,问题就开始了

transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
复制这个问题很容易需要滑动viewpager并立即按下后退按钮。 例外情况是:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: xx.xxxxx, PID: 28590
java.lang.IllegalArgumentException: No view found for id 0x7f070076 (xx.xxxxx:id/facts_pager) for fragment FactsSlidePageFragment{435056b8 #7 id=0x7f070076}
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:930)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
        at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:478)
        at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
        at android.support.v4.view.ViewPager$3.run(ViewPager.java:244)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
        at android.view.Choreographer.doCallbacks(Choreographer.java:574)
        at android.view.Choreographer.doFrame(Choreographer.java:543)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        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:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
以及同一日志的另一部分:

08-08 20:20:26.791 D/TAG﹕ Viewpager onPageSelected() event
08-08 20:20:27.061 D/TAG﹕ Fragment on pause called!
08-08 20:20:27.331 D/TAG﹕ FragmentStatePagerAdapter getItem() called. position = 2
08-08 20:20:27.331 E/FragmentManager﹕ No view found for id 0x7f070076     (xx.xxxxx:id/facts_pager) for fragment FactsSlidePageFragment{435056b8 #7 id=0x7f070076}
据我从日志的最后一部分了解,当我滑动ViewPager时,它需要新的幻灯片片段。他在FragmentStatePagerAdapter中问道,但正如你们所看到的,这个调用是在fragment的onPause调用之后发生的。还有一些问题,因为fragment正在关闭,而viewpager正在尝试做一些事情,同时填充自身

如果我删除这个片段上的动画,一切正常,没有崩溃。 另外,如果我在ViewPager中选择页面后没有快速按下后退按钮,也可以

如果我仍然想在这个片段的开始和结束时使用动画,如何打败它

UPD1:

唯一类似的问题是:


此代码为我解决了问题:

内部MainActivity onBackPressed():

在MyFragment内部:

public void removeAdapterFromPager(){
mViewPager.setAdapter(null);

}

这么多年后,很抱歉打扰您,但我想知道您是否设法解决了这个问题?我也经历了同样的事情。@ZassX当时我不得不删除动画。也许现在有一个更优雅的解决方案:)这里也是一样,我希望有其他的想法。无论如何,谢谢你:)
FragmentManager fm = getSupportFragmentManager();

    FragmentBase myFragment = (FragmentBase) fm
            .findFragmentByTag(ParserConstants.FRAGMENT_MAIN);

    if (myFragment instanceof MyFragment) {
        ((MyFragment) myFragment).removeAdapterFromPager();
    }