54

我無法使用或理解如何彈出 FragmentTransactions關閉背部堆棧處理自定義 動畫。具體來說,我期望它叫做「out」動畫,但似乎並不是 。動畫片段和背部堆棧

我有一個簡單的方法來處理片段事務 (FragmentTransaction),我添加一個片段並應用自定義的 轉換,以便它將淡入/淡出。我也將此添加到 反向棧中,以便用戶可以使用返回按鈕撤消該事務,實質上導航到添加片段 之前的狀態。

protected void changeFragment() { 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out); 
    ft.add(R.id.fragment_container, new TestFragment()); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

一切的偉大工程向前推進,但是當用戶點擊 後退按鈕,過渡動畫不會逆轉。我期望 是,當片段被刪除,它會使用淡出 動畫。相反,它似乎彈出(沒有動畫),然後 容器似乎淡入。我不知道這正是 正在發生,但片段絕對不是淡出。

我的應用程序使用兼容性庫來添加片段支持, ,但我認爲這也適用於Honeycomb(android-11)。 有誰知道如果我只是在這裏做錯了什麼,或者如果我 只是期待太多?理想情況下,我想動畫 片段,類似於Gmail(在Xoom上)如何通過單擊一條消息然後使用背面 按鈕向前移動 。最好不必重寫後退按鈕 功能,並跟上我自己的片段狀態,因爲我可以 有幾個「交易」,我想退出,我不想重新發明輪子的粉絲。

同時要求Android開發組:http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9

+3

我也遇到過這個問題,並在這裏提交了一個錯誤報告http://code.google.com/p/android/issues/detail?id=15623&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars – Damian 2011-03-20 00:35:17

+0

請可以你明星上面的錯誤報告。 – Damian 2011-03-20 00:36:04

+0

已加星標。感謝您提交作爲boog。在此之前,我想再次嘗試。 – 2011-03-22 22:25:46

回答

29

的錯誤是固定在3.2版本有增加以下新的API:

http://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations(int, int, int, int)

這是要注意的是,它尚未回移植到兼容性庫(如錯誤報告中所述)。

+1

兼容性庫(r4)的最新版本現在有此修復程序。 – blazeroni 2011-10-22 02:19:15

+1

我正在使用最新版本的兼容性庫,但每當我嘗試調用此函數時,都會收到「未知動畫名稱:objectAnimator」異常。 – powerj1984 2011-12-12 16:32:37

+0

有了支持,您只能使用xml中的動畫,舊方法,而不是對象動畫。 – Snicolas 2013-03-06 16:35:21

5

這是一個錯誤,看看bug report 15623。其中一位Android項目成員評論說,對於3.1版來說,修復已經太晚了,但它應該將其納入下一個版本。

同一個成員接着說......

的問題是相同的 動畫上彈出操作 運行的運行,以把片段 他們目前的地方。例如,在 上述滑動例如,在 正向操作(推壓舊 片段到堆棧和移動 新片段導入視圖),我們出從中心滑動 舊片段 左側和滑動 中從右到中的新片段。當 棧被彈出,這些相同的動畫 正在運行:最近的片段是 通過從 右邊滑動到中心動畫「出」(後 消失,因爲它是 刪除)。舊片段彈出 離開堆棧,並從中心向左移動動畫 ...就在 屏幕上。

49

我用這個:

ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out, R.anim.hyperspace_in, R.anim.slide_out); 

和過渡工作在反向時後退按鈕是印刷機。

+10

先生,你是男性中的上帝。 – Guardanis 2014-01-10 20:15:24

+0

完美!非常感謝! – datayeah 2014-04-14 23:40:30

+0

這是一個簡單的解決方案 – 2015-03-02 15:19:24