2016-11-15 4 views
0

私は3つのアクティビティを持つAndroidアプリを持っています。ユーザーがAndroidの以前の多くのアクティビティに戻るのを停止します。

アクティビティ1:

--Button Signup1

--Button Signup2

活動2:

--Button CreateAccount

アクティビティ3:

流れは次のようになります:

ACT2

にActivity_______UserAction____________Result

1____________click SignUp1____________Move

2____________clickのCreateAccount_____Move ACT3に

私が知りたいのは、私が行くからユーザーを防ぐことができる方法、活動3に着いたときでありますすぐ前のアクティビティ(activity2)だけでなく、以前のすべてのアクティビティに戻ります。

Activity2でstartActivity()の後にfinish()を呼び出すことを常に勧めています。しかし、アンドロイドがユーザーをactivity1に戻すので、これはうまくいかないでしょう。

さらに、Activity1では、startActivity()の後にfinish()を呼びたくないので、ユーザーがActivity2からActivity1に戻ることができるようにしたいとします(たとえば、SignUp2を使用したいとします)。

合計すると、ユーザーがアクティビティ3に達したときのみ、以前のアクティビティに戻ることはできません。

どのように達成できますか?

+0

。 –

+0

「onBackPress」を無効にする – Enzokie

+0

@Enzokieこれは彼が探していたものだとは思わないが、彼はスタートアビリティでvlearトップフラッグを必要とする。これが私が重複としてフラグを立てた理由です:) –

答えて

1
これらのフラグ

であなたの活動を開始し

私が台無しにどこので、私は知っているdownvoteを教えてください(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)

+0

ありがとうございました。私はあなたの答えをすべて+1しています。なぜなら、それらはすべて同じ方法で現われていたからです。しかし、これが最初のものなので、私はこれを答えにすることが正しいと思う。 –

4

あなたはActivity3意図にこのフラグを追加してみてくださいすることができます

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_A‌​CTIVITY_NEW_TASK); 

これは、あなたが正確に押された背中の場合に何をすべきかをアンドロイド伝えることができ、これを使用して活動backstack

+0

私はこのアプローチに興味があったので自分で試しましたが、アクティビティ3を開始するのに使用された意図のフラグを設定していたにもかかわらず、私のアクティビティ2に戻ることができます。それは、新しいタスクがアクティビティ3のために開かれたときに、タスクアクティビティ1と2がスティックで実行されているためです。アクティビティ3の戻るボタンを使用することができます。 – clownba0t

1
@Override 
public void onBackPressed() { 
    super.onBackPressed();} 

をクリアするために強制すべきです。あなたが使用して活動間のナビゲーションについてだけ心配している場合は

また、それはuがあなたの要件ごととしてあなたonPauseとonDestroyメソッドをオーバーライドすることができれば良いアイデアは、この

1

により明確にするためにAndroidのライフサイクルを通じて行ってくださいますデバイスの戻るボタンを押して、表示されている制限があれば、ActivityonBackPressed()メソッドをオーバーライドして、必要なものを達成できるはずです。

@Override public void onBackPressed() { /* Empty */ } 

これが実行してから、活動を終了onBackPressed()のAndroidの標準実装を、防ぐことができます:実装は、このように、空であることを確認してください。

関連する問題