2016-03-11 112 views
0

我有一個共享的元素添加轉場的片段,像這樣錯誤片段

currentFragment.setEnterTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); 
    currentFragment.setExitTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); 
    Transition transition = TransitionInflater.from(context).inflateTransition(android.R.transition.slide_right); 
    transition.setDuration(context.getResources().getInteger(R.integer.fragment_transition_duration)); 

然後

targetFragment.setSharedElementEnterTransition(TransitionInflater.from(context).inflateTransition(R.transition.change_image_transform)); 
    targetFragment.setEnterTransition(TransitionInflater.from(context).inflateTransition(android.R.transition.fade)); 
    targetFragment.setReturnTransition(transition); 

我看到的問題是,一旦我瀏覽到如果我點擊後退按鈕 - 重複和非常快地調用默認的onBackPressed(),則活動會將錯誤的片段顯示爲可見。當我點擊屏幕時,點擊事件轉到正確的片段(可能在可見片段下面),但我看不到正確的片段。

如果我更慢點擊後退按鈕,我會得到正確的行爲。有沒有人遇到過這樣的情景?

編輯:這是什麼FragmentActivity做

/** 
* Take care of popping the fragment back stack or finishing the activity 
* as appropriate. 
*/ 
public void onBackPressed() { 
    if (!mFragments.getSupportFragmentManager().popBackStackImmediate()) { 
     supportFinishAfterTransition(); 
    } 
} 

另一件事提的是,當我刪除返回變換我沒有這個問題。

回答

0

好的,我找到了答案,如果任何人有興趣。我不知道這是爲什麼起作用,但它似乎解決了我的問題。

如果你有一個設置了返回轉換的片段,那麼在你的onDestroyView()中調用方法setReturningTransition(null)。