Android標準のタブが残念なので (2)

俺内で残念さに定評のあるAndroidのタブ界隈


一応ざっとTabHost周りの再発明はしてみて、まあこんなもんかなというイメージにはなってきた。
ActivityGroupから呼び出して動く程度にはなったんだけど、ActivityGroupがこれまた微妙な感じ……。
ライフサイクルというかステート管理というか、onCreateとかあの辺のホントに基本的な処理しかバイパスしてない。
各種ディスパッチは継承して各々やれってことかな。
LocalActivityManagerのgetCurrentActivity()の扱いが謎。というかsetCurrentActivity()がない。
内部を見るとmResumedを返しているのだけど、mResumedの更新タイミングってmSingleModeの時に新しいActivityを追加した時に追加した方をmResumedにしてその前のものをpauseしてる。あとresumeする時はmResumedだけをresumeしてる。うーん?
TabActivityはmSingleMode=trueで動いてるんだけど、TabHostは別途CurrentTabを覚えていて、どうもLocalActivityManagerのCurrentActivityとは同期してないように見える。
なんだか納得いかねーなー。
ここもまるっと車輪の再発明にした方がいいような気がする。
また、サブActivityはフルスペックのActivityを直接継承して作るため、親Activityや兄弟Activityと通信する機構がなさそう。
これだと「タブの中で」遷移することが出来ないように見える。というのはタブの中でActivityを起動するのは親ActivityのLocalActivityManager#startActivityだから。BroadcastIntentでやり取りしないといけないのかもしれない。
また、タブ内遷移の履歴も取れない。
やっぱ再発明かのぅ……

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です