3

A、B、C、D の 4 つのアクティビティがあります。もう 1 つ、E.

A、B、C、D の間で新しいアクティビティを開始する場合は問題ありません。ただし、これらのいくつかのポイント (たとえば、ログインが成功したとき) では、アクティビティ E を開始したいが、A、B、C、およびすべてをクリアしたい場合があります。 D アクティビティ (つまり、バック スタックのクリア)。

というわけで、アクティビティ E に到着したら戻るボタンを押すと、アプリケーションから離れます。

startActivity: Intent.FLAG_ACTIVITY_CLEAR_TASK、Intent.FLAG_ACTIVITY_CLEAR_TOP などにフラグを追加しようとしていますが、動作を達成できません。

何か案が?

ありがとう!

4

3 に答える 3

1
Intent intent = new Intent(this, EActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                this.startActivity(intent);
                this.finish();
于 2012-12-04T16:50:17.527 に答える
0

アクティビティ E の onBackPressed を次のようにオーバーライドします。

    @Override
    public void onBackPressed() {
        moveTaskToBack(true);
    }
于 2012-12-04T16:33:39.207 に答える
0

try as for startActivity Activity A,B,C and E

Intent intent = new Intent(A.this,B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
A.this.finish();

and declare your A,B and C activity as in androidmanifest.xml :

<Activity android:name=".A" 
    android:launchMode="singleInstance" />
 //..do B,C activities same

and override onKeyDown in Activity E

@verride
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        Activity_E.this.finish();
    }
    return super.onKeyDown(keyCode, event);
}
于 2012-12-04T16:36:01.320 に答える