Activity1 (未終了) は Activity2 を開始でき、Activity2 (未終了) は Activity3 を開始できます。また、Activity2 と 3 は、次を使用して前のアクティビティに戻ることができます
super.onBackPressed();
this.finish();
そして、Activity3がActivity1(更新ではなく)に直接戻り、Activity2のメモリを解放する方法を知りたいですか?
Activity1 (未終了) は Activity2 を開始でき、Activity2 (未終了) は Activity3 を開始できます。また、Activity2 と 3 は、次を使用して前のアクティビティに戻ることができます
super.onBackPressed();
this.finish();
そして、Activity3がActivity1(更新ではなく)に直接戻り、Activity2のメモリを解放する方法を知りたいですか?
Intent intent = new Intent(Activity3.this, Activity1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
これにより、Activity1
be がバックスタックの一番上になり、その上のすべてが殺さActivities
れます。お役に立てれば。
アクティビティ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番目のアクティビティが終了します。それ以外の場合は、通常のアクティビティと同じように前後に移動できます。
super.finish();を試してください。2番目のアクティビティを閉じます。
既存のアクティビティに戻りたい場合は、一意のIDとonActivityResultを使用できます。resultData== ID-> 2番目のアクティビティを閉じます(ユーザーにとっては、3番目のアクティビティから最初のアクティビティに戻ったように見えます)。
アクティビティのスタックの詳細については、Googleサイトにアクセスしてください
また、フラグメントが適している場合もあります。フラグメントスタックを簡単にウォークスルーできます。
これを試して
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}