1

実際、Androidのカスタムタブに直接問題があります。それにもかかわらず、私は私の質問を一般化します。ActivityA私がとを持っているとしましょうActivityBActivityA- は外部のものであるため、 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これを達成する方法はありますか?

PS私は終了する必要がありActivityA、インテントを介して起動され、そのコードにアクセスできず、呼び出すことができませんfinish()

4

2 に答える 2

1

が起動を行っており、それを制御できないため、NO_HISTORY フラグを使用してこれを行うことはできないと思いますActivityA

ただし、目標を達成できるはずです ( [戻る] ボタンをオーバーライドして、タスク スタックの下にあるものにActivityB戻ることによって、元に戻ることはできません)。ActivityAActivityBActivityA

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);
}
于 2017-01-03T12:29:28.557 に答える
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
于 2016-12-29T15:31:19.963 に答える