1

実際にアンドロイドのカスタムタブに直接問題があります。 しかし、私は私の質問を一般化します。私がActivityAActivityBを持っているとしましょう。 ActivityAは - 私たちはテントから起動するように、外部のいずれかになります。履歴と履歴からアクティビティを除外します

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の私の意図に貼り付けてこれを達成することができます。しかし、このアプローチは問題を引き起こしています。なぜなら、ユーザーがrecentsに切り替えるか、他のアプリに行くと、ActivityAは永遠に消えるからです。もちろん、それは歴史のない旗でもあります。しかし、私は別の流れが欲しい、ActivityAは、ActivityBが立ち上げられたときにだけ消えたい。どのようにこれを達成するための任意のアイデアですか?

P.S.私はActivityAを完了させる必要があります。これはインテントを介して開始され、コードにアクセスすることはできません。finish()を呼び出すことはできません。

+0

あなたが '' startActivity(意図) '後)('仕上げを呼び出すことができ – GVillani82

+0

あなたは**で何を意味しています"私は、そのコードにアクセスできません "**そしてなぜあなたはfinish()を呼び出せないのですか? –

+0

私が言及したように@AmitUpadhyay - ActivityAはカスタムタブのアクティビティです。それは私のものではなく、アンドロイドのアクティビティです。 –

答えて

1

私はActivityAの起動を行っているので、あなたがNO_HISTORYフラグを使用して、これを行うことができるとは思わない、あなたはそれを制御することはできません。

ただし、(ActivityBにBACKボタンをオーバーライドし、それが戻って下ActivityAタスクスタックであるものは何でもへ行くことによってバックActivityAからActivityBから行くことができないあなたの目標を達成することができるはずです。

ActivityCあなたはActivityBにこのような何かを行うことができ、ActivityAを開始1であると仮定すると:。

@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を終了する必要があります。 –