マップ、人物、場所、イベントの4つのタブを持つアプリを作成中です。アプリ内の人々、場所、イベントはマップ上にアイコンとして表示されます。デフォルトでは、[People]、[Places]、[Events]の各タブにはそれぞれリストビューが表示され、カスタムレンダリングされ、すべての人物、場所、イベントが表示されます。今Android - タブ、MapView、タブ内のアクティビティ
alt text http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adcb134-scaled.png
、今のタブのそれぞれは、そのコンテンツに対応するアクティビティを起動する意向セットとして持っています。たとえば、MapActivityを拡張するMapTabActivity、人を示すShowPeopleListActivityなどがあります。
私が原因のように様々な制限にTabHostが設定され、それはタブの内容として活動を使用しないことをお勧めだと言ってlotofStackOverflowquestions /答えを参照してください。たとえば、新しいアクティビティを起動してタブ内の既存のアクティビティを置き換えることは不可能ですが、別のビューでビューを切り替えることは可能です。
今、私は交差点にいます。私たちは(良いか悪いかに関わらず)このアプリをタブのコンテンツとして、現在構造化された方法で動作させるためにかなりの時間を費やしました。人物、場所、またはイベントに対応するアイコンがクリックされると、そのオブジェクトに対応するURIのVIEWインテントを起動します。これは、オブジェクトによって示されるアクティビティによって取得されます。マップと個々のリストの両方で同じメカニズムが働いています。これが私たちに提供する疎結合が本当に好きです。 VIEWコマンドとURIをperson/place/eventに渡すだけで、自動的に適切なアクティビティが実行されます。確かに、起動されたアクティビティは、その中に表示されるのではなく、タブビューをカバーしていますが、これを使用して喜んで生きていました。
ここで問題があります。ショーのアクティビティから、その人、場所、またはイベントを中心に地図に戻ることができるようにしたいと考えています。新しいアクティビティを起動してマップを再度表示することもできますが、マップアクティビティはタブの内容と、showアクティビティと、アクティビティスタック内の新しいマップアクティビティに加えて追加されました。地図のアクティビティがどのようにリソースに集中しているかを考えれば、これは理想的な方法ではないと思います。
私は質問があると思います.Goodチュートリアルでは、TabHostで複雑なタスクを行う方法を正確に示していますか?私はHelloTabWidgetを見た。私はこれよりずっと洗練された何かを探しています。ビューをベースにしたやり方に切り替えると、すべてのバックイベントをインターセプトしたり、ビューを切り替えたりするなど、たくさんのハウスキーピングを行う必要があると私は心配しています。強く私たちのプログラムを私たちが望んでいない方法で結びつけること。
今後の進め方に関する提案は非常に高く評価されます。私たちはAndroidが初めてのので、確立されたベストプラクティスに従っていますが、私たちが見てきたいくつかの例は、ユースケースではあまりに単純すぎます。
私はすべてのインテントを同じように設定して、Showアクティビティが開始されると、バックイベントはまったく同じように処理されることを確認します。 私は、インテントを起動するのではなく、タブのコンテンツをプログラムで切り替えた場合、実際の複雑さ(およびバックイベントの痛み)があると思います。例えば。一般的に人のリストを表示する人物タブは、人がクリックされたときに人物の表示に切り替えるように指示されます。その場合、私たち自身の見解を扱わなければならないだろうか? – I82Much
また、タブの内容としてアクティビティを持たずにタブ内にマップを作成するにはどうすればよいですか?それは可能ですか? – I82Much
w/r/tあなたの最初のコメント、はい、独自のスタック管理を行う必要があります。 w/r/tあなたの2番目のコメント、はいあなたはAFAIKすることができます。主なアクティビティをTabActivityではなくMapActivityにします。 TabActivityがあなたのために行う唯一のことは、あなたのTabHostに自動的にsetup()を呼び出すことです。あなたはTabSpecを追加する前に自分自身を実行する必要があります。 MapActivityは、マップをタブに配置するために必要なものを提供します。ここに問題がある可能性はありますが、袖口から外しても問題ありません。 – CommonsWare