1

其實我有一個直接問題與android自定義選項卡。 但不過我會概括我的問題。假設我有ActivityAActivityBActivityA - 是一個外部人,所以我們從一個Intent啓動它:排除活動從最近和歷史

Intent intent = customTabsIntent.intent; 
     intent.setData(requestUri); 
     intent.putExtra(CustomTabsIntent.EXTRA_TITLE_VISIBILITY_STATE, CustomTabsIntent.NO_TITLE); 
     mContext.startActivity(intent); 

從這裏我們可以看到,ActivityA - 實際上是一個自定義選項卡的活動。當事情完成後,我啓動ActivityB。我想ActivityA便宜的任務歷史,我可以達到這個標誌Intent.FLAG_ACTIVITY_NO_HISTORY符合我的意圖。但是這種方法會導致問題,因爲當用戶切換到最近,或去其他應用程序 - ActivityA永遠消失。當然 - 這就是沒有歷史的標誌。但我想要一個不同的流程,我希望ActivityA只有在ActivityB啓動時纔會消失。任何想法如何實現這一目標?

P.S.我需要完成ActivityA,這是通過意圖啓動的,我無法訪問其代碼,因此我無法撥打finish()

+0

你可以叫'完成()''後startActivity(意向)' – GVillani82

+0

你這是什麼意思** 「我不'不能訪問它的代碼「**,爲什麼你不能調用finish()? –

+0

@AmitUpadhyay正如我所說的--A ActivityA是自定義選項卡活動,這是Android活動,不是我的。 –

回答

1

我不認爲你可以使用NO_HISTORY標誌,因爲ActivityA正在做發射,你有沒有對其進行控制做到這一點。

但是,你應該能夠實現自己的目標(不能夠在ActivityB覆蓋BACK按鈕並讓它回到無論下面是任務堆棧ActivityAActivityB回去ActivityA

假設ActivityC是啓動ActivityA的人,你可以做這樣的事情在ActivityB

@Override 
public void onBackPressed() { 
    // Direct user back to ActivityC 
    Intent intent = new Intent(this, ActivityC.class); 
    // Add flags to ensure that we reuse the existing instance of 
    // ActivityC and that we clear any other activities above ActivityC 
    // from the stack. 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
        Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(intent); 
} 
+1

我喜歡你的解決方案。它解決了我的問題。非常簡單的解決方法。謝謝。 –

+0

很高興爲您服務! –

0

您可以使用finish()方法來清除任何活動。所以在開始之前開始另一個activity完成。

Intent intent = customTabsIntent.intent; 
      intent.setData(requestUri); 
      intent.putExtra(CustomTabsIntent.EXTRA_TITLE_VISIBILITY_STATE, CustomTabsIntent.NO_TITLE); 
      mContext.startActivity(intent); 
     finish();  //add this to clear that activity 
+0

我需要完成由意向啓動的ActivityA。 –