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。 –