2012-09-02 30 views
2

有兩項活動。在Android上刪除切換活動動畫

活動A有一個按鈕,可以切換到活動B.

活動B也有一個按鈕,可以切換到活動A.

這裏是我的代碼,

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    Log.e("current", context.getClass().toString()); 
    Log.e("changeto", tab.getTag().toString()); 
    if(context.getClass()==tab.getTag()) 
     return; 

    Intent intent = new Intent(new Intent(context,(Class<?>) tab.getTag())); 
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
    context.startActivity(intent); 
} 

我當我切換活動時想要移除動畫,但它不起作用。

但是,如果我刪除

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

它完美的作品。爲什麼?

對不起,我的英語不好。

回答

7

在您切換到的活動中,嘗試在onResume或onCreate中使用overridePendingTransition(0,0);

+0

它適用於onResume。 –

+0

太棒了。幫我 – dmSherazi

0

如果您在製表符切換中調用startActivity,那麼您做錯了。選項卡用於在當前活動內切換視圖,切換選項卡不應創建導航歷史記錄。考慮切換一個片段或用新選擇的選項卡的內容替換您的視圖層次。

越是追求標籤選擇切換活動的路徑,越會發現自己玩的是一種微妙的用戶體驗錯誤,會讓您的應用感覺「錯誤」。

在上面提出的實現中,後退按鈕將返回到先前選擇的選項卡,打破「從不創建導航歷史記錄」規則。您可能會認爲在開始下一個活動時完成()當前活動可以解決這個問題,但您仍然會遇到許多其他問題。用戶期望狀態的細微元素,例如滾動位置在各個選項卡中保留。從Android 4.0開始,用戶應該能夠在選項卡之間水平滑動(http://developer.android.com/design/building-blocks/tabs.html),如果您對每個選項卡的內容使用單獨的活動,則無法完成此操作。

這只是一個小樣本,列表就在繼續。選項卡不應該用於在不同的活動之間切換。

+0

我已經嘗試使用viewpager +片段, 但片段不能在另一片段內。 http://stackoverflow.com/questions/12227172/android-inflate-a-layout-contains-fragment –

+0

我很清楚,但你似乎已經錯過了我的文章的整個點,如果你仍然認爲你唯一的選擇是分裂成不同的活動或嵌套片段。 :) – adamp