1

Ice Cream Sandwich/Honeycomb が登場する前は、開発者は画面の UI インタラクションを処理するために、アクティビティに関するロジックのフローを作成していました。各タブがフラグメント アクティビティとして機能する、結合されたタブ/ビュー ページャーを作成するタスクに直面しています。

最終的な結果は、元のコードが乱雑に見えるか、フラグメント アクティビティを設計するための不適切なアプローチであるかのいずれかです。

1 つの画面を管理する 1 つのアクティビティと、その画面のすべての UI 側面を制御するアクティビティについて考えてみましょう。今、ActionBarSherlock を使用して、画面 UI コントロールをフラグメント アクティビティのレイアウトに移動しました。以前のように、あるタブから次のタブにスワイプするためのタブ処理メカニズムを備えたメイン アクティビティがあり、インテントを開始します。別の活動を開始します。

私の質問はこれです: 元のコードをフラグメント アクティビティに分割する最善の方法は何ですか? ハンドラーを使用してメッセージをフラグメント アクティビティからメイン アクティビティに内部的に渡すことを考えましたが、それは間違ったアプローチであることがわかりました。

これには ActionBarSherlock を使用しています。

検索しましたが、このシナリオの具体的な例とそのアプローチ方法を見つけることができませんでした。

編集: CommonsWare からのコメントの後、これが意図です。ここでhttp://androiduipatterns.comに表示されている 2 番目の画像を見てください。「Lewis Llewellyn と Facebook」のスクリーンショットです。

前: Activity1 つの画面の UI の側面を処理していました。

現在: apk の「メイン」アクティビティSherlockFragmentActivityViewPagerあるタブ ホストを使用し、各タブ フラグメントはSherlockFragment. 各タブは、UI コントロールを含む画面になりました。

4

2 に答える 2

3

IMHO、ViewPager他のフラグメントが現在存在する可能性があることを知らないため、各フラグメントはそれ自体を処理します。他のフラグメントまたはアクティビティ全体に影響を与える可能性があるそのフラグメント内のイベントは、 を介してホスティング アクティビティに渡すことができますgetActivity()。複数のアクティビティからこのフラグメントをホストする予定がある場合は、インターフェイスにキャストすることもできます。必要ありませんHandler

于 2012-04-28T22:43:51.720 に答える
2

だから、あなたが望むのは、異なるフラグメント間でコードを複製することではないと思いますよね?非常に類似したフラグメントの場合に私が行うことは、拡張元と同じコードでベースフラグメントを作成することです。もう 1 つのオプションは、Google がよく私が気づいたことですが、(静的) メソッドを使用してヘルパー クラスを作成することです。いずれにせよ、別のフラグメントからフラグメントを呼び出さないようにしてください。

于 2012-04-29T10:58:19.060 に答える