15

アプリ構築の概念化/設計段階にいるのですが、ちょっとした問題にぶつかりました。基本的に、TabHost/TabActivity と同様に、あるアクティビティを別のアクティビティの UI に埋め込む方法を探していました。画面の上部には他のアクティビティを含むウィンドウがあり、その下には上記のアクティビティとは独立したボタンとコントロールがあり、常に表示される必要があります。ユーザーは、以下のコントロールに変更を加えることなく、ウィンドウ内の 1 つのアクティビティから別のアクティビティに移動できます。

問題を調べているときに、ActivityGroup に出くわしました。これは便利そうに見えましたが、どのように実装すればよいでしょうか? 誰でもActivityGroupの経験がありますか、それとも別のアイデアがありますか?

4

1 に答える 1

20

はい、ActivityGroup を実装します。これは、他のアクティビティのコンテナーになります。ユーザーがいずれかのボタンをクリックすると、LocalActivityManager への参照が取得され、それを使用して開始され、内部アクティビティが埋め込まれます。このようなもの:

LocalActivityManager mgr = getLocalActivityManager();

Intent i = new Intent(this, SomeActivity.class);

Window w = mgr.startActivity("unique_per_activity_string", i);
View wd = w != null ? w.getDecorView() : null;

if(wd != null) {
    mSomeContainer.addView(wd);
}

このメソッドの使用は非常に複雑になる可能性があることに注意してください。フォーカスが適切でない限り、ハードウェア ボタン (メニュー ボタンなど) を押すと、内部のアクティビティではなく、ActivityGroup でのみイベントがトリガーされるためです。内部アクティビティをコンテナー ビューに追加した後、内部アクティビティにフォーカスする何らかの方法を見つける必要があります。その時点で、内部アクティビティでイベントが発生し、コンテナー アクティビティに伝播します。

それはできる、私はそれをやった...そしてそれはうまくいく。私が思っているよりも少し複雑です。

とにかく、ここで見つけることができるTabHostコードを見て、この情報のほとんどを取得しました

于 2010-07-16T13:34:55.160 に答える