0

ここに画像の説明を入力

Activity1 (未終了) は Activity2 を開始でき、Activity2 (未終了) は Activity3 を開始できます。また、Activity2 と 3 は、次を使用して前のアクティビティに戻ることができます

super.onBackPressed();
this.finish();

そして、Activity3がActivity1(更新ではなく)に直接戻り、Activity2のメモリを解放する方法を知りたいですか?

4

5 に答える 5

3
Intent intent = new Intent(Activity3.this, Activity1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

これにより、Activity1be がバックスタックの一番上になり、その上のすべてが殺さActivitiesれます。お役に立てれば。

于 2012-12-20T09:59:37.497 に答える
0

アクティビティ2

Intent intent = new Intent(Activity2.this, Activity3.class);
startActivityforResult(intent,0);

Activity3から戻ってきたら、必要に応じてオーバーライドonBackPressed()して結果を設定します

setResult(RESULT_CANCELED);

次に、Activity2のonActivityResult()をオーバーライドします

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == 0) {
            if(resultCode == RESULT_CANCELED)
                finish();
        }
    }

結果が設定されると、これで2番目のアクティビティが終了します。それ以外の場合は、通常のアクティビティと同じように前後に移動できます。

于 2012-12-20T10:08:02.707 に答える
0

super.finish();を試してください。2番目のアクティビティを閉じます。

于 2012-12-20T10:05:07.480 に答える
0

既存のアクティビティに戻りたい場合は、一意のIDとonActivityResultを使用できます。resultData== ID-> 2番目のアクティビティを閉じます(ユーザーにとっては、3番目のアクティビティから最初のアクティビティに戻ったように見えます)。

アクティビティのスタックの詳細については、Googleサイトにアクセスしてください

また、フラグメントが適している場合もあります。フラグメントスタックを簡単にウォークスルーできます。

于 2012-12-20T10:05:21.930 に答える
0

これを試して

@Override
 public void onBackPressed() {
     startActivity(new Intent(this, UI.class)
     .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
 return;
}
于 2012-12-20T10:01:04.793 に答える