アクティビティが別のアクティビティから呼び出されるたびに、アクティビティのライフ サイクルに従って、呼び出し元のアクティビティがスタックに入ります。A から B に移動すると、A がスタックに格納され、B が開かれます。ボタンを押したときに、(A から B から C から D から A)、(D から A またはその逆) に移動したいが、B から A または C から B または D から C または A から D には移動したくない。
B からアクティビティ C を呼び出す場合は、finish() を呼び出して B を破棄します。同様に、C から D を呼び出して C を破棄する場合も、後戻りできないようにします。これにより、フローが制限されます。
クラスAはActivityを拡張します{
//ボタンクリック
Intent intent=new Intent(A.this,B.class);
startactivity(intent);
}
クラスBはActivityを拡張します{
//ボタンクリック
Intent intent=new Intent(B.this,C.class);
startactivity(intent);
finish();
}
クラスCはActivityを拡張します{
//ボタンクリック
Intent intent=new Intent(C.this,D.class);
startactivity(intent);
finish();
}
クラスDはActivityを拡張します{
//ボタンクリック
Intent intent=new Intent(D.this,A.class);
startactivity(intent);
}
このように、A から B へ -> A がスタックに格納され、B から C -> B が破棄され (finish を使用)、C から D -> C が破棄され、D から A に直接移動できます。戻るボタンを使用。D から A に移動した後にもう一度戻るボタンを押すと、D になり、もう一度押すと A になり (最初のアクティビティが開始されます)、もう一度押すとアプリが終了します。