2011-07-07 4 views
3

iOSアプリケーションのかなり一般的なモデルは、各タブが本質的にコントローラのスタックであるUINavigationControllerを保持し、タブを押すことは対応するスタックの先頭に切り替わる単一のUITabBarControllerを持つようです。カスタムコードを大量に使用せずにAndroidで同じ動作をさせることはできますか? (注:Androidではタブの代わりにメニューを使用しています)。UITabBarController内に複数のUINavigationControllerを持つiOSのように、Androidアプリで複数のアクティビティスタックを管理するにはどうすればよいですか?

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.htmlを読んだ後で、私は、それぞれがスタックを表す複数のタスク(UINavigationControllerに似ています)を使用し、FLAG_ACTIVITY_NEW_TASKを使用して別のタスク/スタックに切り替えることがわかります。私が切り替えると、スタックの一番上にまっすぐ行く方法があるのでしょうか、それとも自分自身でその状態を保つ必要がありますか?

私は自分のアプリが新しいプロセスを開始するインテントを起動すると、元のアプリケーションのプロセスが殺されることがあります(私は思う)、私のグローバルな状態はすべて破壊されていることに気付きました。

私が想像することができる唯一の他の解決策は、DummyActivityNをNスタックから離れる前に押して、Mスタックに切り替えるときFLAG_ACTIVITY_NEW_TASKでアクティビティDummyActivityMを開始することです。すぐにDummyActivityMをfinish()します。

最後の1つの問題:スタックの1つのボトムに戻るボタンを使用すると、もう一度戻るボタンを押して別のスタック/タスクに移動しないといけません。しかし、これはホームスクリーンに行くためにインテントを立ち上げることによって克服するのは簡単だと思われる。もっと良いものはありますか?

答えて

0

このパラメータをAndroidManifest.xmlのアクティビティ宣言に追加すると、カスタムメニューで起動されるアクティビティは1回だけ作成され、タブを移動しながら状態を維持することができます。

 
android:launchMode="singleTask" 

私はこれは私が何を意味するのか、非常ない

+0

は-sekran、

ベスト、このことができます願っています。例えば、私はA - > A ' - > A' '、B - > B'、C - > C ' - > C' ' - > C' ''のようなスタックを持つタスクを持つかもしれません。私は別のタスクに切り替えることができ、それが何であるかを知らなくても、一番上のアクティビティ(A、B、またはC)のみを知ることなく自動的に一番上のアクティビティに移動したいと考えています。 – michael

関連する問題