2017-12-13 7 views
-3

は、今私はHomeActivityを持っています。インテントフラグや他の提案でこのフローを処理するにはどうすればよいですか?、フロー制御

編集

しかしActivity AActivity BActivity Cが表示され、スタックから削除する必要があります。

Activity ABCこのワークフロー、そうABに行くことができるとBは、私はその後、BABがなくなってしなければならない提出した後、何かを編集するAに戻って確認としてCを表示することができます

+0

あなたはアクティビティA、Bにブロードキャストを送信して自分自身を終了することができます。 – Lucky

+0

アクティビティBのユーザがユーザに戻るときにアクティビティAを表示する必要があります。アクティビティCが表示された場合は、アクティビティCが表示されたらクリアしてください。 –

+0

はいユーザがバックプレスをクリックした場合にブロードキャストを送信する必要があります – Lucky

答えて

0
あなたは使うべき

は、このフラグは 活動が開始される前にクリアされ にアクティビティに関連付けられる既存のタスクが発生します。つまり、アクティビティ は空のタスクの新しいルートになり、古いアクティビティはすべて終了します。これは、 FLAG_ACTIVITY_NEW_TASKと組み合わせてのみ使用できます。

コードの構造

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    finish(); 
+0

これは履歴内のスタックをすべてクリアします –

+0

@theerasantonthongkam私はすでに 'finish()'を使用していると言っています –

+0

@theerasantonthongkamこれはまだ解決されていますか? –

0

使用しますが、これを達成することができ、起動モードを使用して、このコード

Intent intent = new Intent(ActivityC.this, HomeActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    startActivity(intent); 
    finish(); // call this to finish the current activity 
0

。 は

<activity android:name=".ActivityC" 
android:launchMode="singleTask"> 
0

あなたは、次のいずれかを開始する前に活動を殺す必要があり、マニフェストファイルでのアクティビティCのための単一のタスクを使用します。

Intent intent = new Intent(ActivityC.this, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
finish();