2012-03-27 15 views
1

例:「子アクティビティ」を折りたたむにはどうすればよいですか?

A (Home) -> B -> C 

Activity A launches Activity B 
Activity B launches Activity C 

When user is on Activity B and they hit the Back button, it takes them Activity A 
When user is on Activity C and they hit the Back button, it takes them Activity B 

私が望むどのようなユーザーアクティビティCの上にあるときに、彼らは「私のルートアクティビティ」ボタンを押した場合、それは意志である:私は、次の行動を持っている3つの活動とのアンドロイドアプリを持っていますアクティビティAの新しいインスタンスをバックスタックに追加せずにアクティビティAに移動します。

だから私はしたくない。私が望む何

1) A 
2) A-B 
3) A-B-C 
4) A-B-C-A 

は次のとおりです。

1) A 
2) A-B 
3) A-B-C 
4) A 

私はこれをどのように行うことができますか?

答えて

0

は、ベースの活動を広げます。基本アクティビティでは、onActivityResult()を定義しました。これは、スタックの先頭のアクティビティが特定のresultCodeを設定している場合にfinish()を適用します。したがって、アクティビティCの「My Root Activity」ボタンを押すと、アクティビティAに再帰的にロールアップされます。「戻る」ボタンは、その機能を維持します。

私は「singleTask」を使用しますが活動Aを起動すると、私は、それは私が活動C.のカップル

0

EDIT: あなたはマニフェストファイルであなたの活動に「singleTaks」または「singleInstance」を追加し、onNewIntent()メソッドを実装することができます。

「singleTaks」

システムが新しいタスクとルートそれへの意思のルートで活動を作成します。ただし、アクティビティのインスタンスがすでに存在する場合、システムは新しいインスタンスを作成するのではなく、そのonNewIntent()メソッドを呼び出してインテントを既存のインスタンスにルーティングします。

「singleInstance」システムは、インスタンスを保持しているタスクに他のアクティビティを起動していないことを除いて「singleTask」と同じ

、。アクティビティは常にそのタスクの唯一のメンバーです。

は意図スタック機械をチェックthis link

+0

ニースにしたくないが、私は活動Cの午前た場合、依存関係だリロード含まれていたので、これはまれなシナリオですアクティビティBに戻る方法がありません - >「ユーザーがアクティビティCを使用しているときに戻るボタンを押すとアクティビティBが表示されます」 –

+0

ああ申し訳ありませんが、あなたはもはや必要なアクティビティがないと考えていますB – bughi

1

をチェック!私はそれぞれの子の活性を有する

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

+0

あなたは間違いなく、このドキュメント。あなたが急いでいるなら、あなたが探しているものは 'FLAG_ACTIVITY_CLEAR_TOP'です。 – sastraxi

+0

私はそのドキュメントを読んで1時間を費やしました。定義したユースケースについては何もありません。最も近いものは "singleTask"でした。私は、アクティビティAをsingleTaskを使用するように設定したいと思います。アクティビティCにアクセスして「My Root Activity」ボタンを押すと、finishTask()やそのようなことが起きるので、子BとCは除去された。 –

関連する問題