2016-04-12 10 views
0

私はAndroidプログラミングの初心者で、アクティビティ - フラグメントプリンシペの理解に問題があります。 私が理解している限り、フラグメントは「サブアクティビティ」のようなもので、1つのアクティビティに複数のフラグメントを追加できますが、フラグメントなしでアクティビティを作成することもできます。 「なぜフラグメントを使用するのか」という質問に対する回答は、ネット全体で見つけることができます。また、このトピックに関するいくつかのスタックオーバーフローに関する質問もあります。 しかし、私の質問です:断片を使用する利点がある場合 - なぜ活動を使用するのですか? フラグメントが「より良い」ものであればどこでも使えるはずですが、すべてのアクティビティクラスは空になり、フラグメントはコンテンツを画面に表示します - これがベストプラクティスですか?問題を理解するフラグメントとアクティビティ

たとえば、メニューを追加する場合は、フラグメントにのみ入れることができるので、ActivityクラスにsetHasOptionsMenu()を追加する際のポイントは何ですか?

具体的には、私は何をアクティビティに入れなければならないのですか?

私の問題を理解していただければ幸いです。

+2

「私は何をアクティビティに入れて、何を断片化するべきか」 - これは、すべてのAndroidプログラマーがAppを書くたびに尋ねるべき質問です。あなたが見てきたように、断片に対する反対意見があるので、回答は概して意見に基づいています。 Fragmentを使用する典型的な例は、メニューシステム、ViewPagerなどです。いくつかの利点は、すべてがHostingアクティビティにアタッチされていますが、独自のライフサイクルを持っていることです。個人的にすべてのケースを個別に扱い、For/Againstカテゴリには入ってはいけません。 –

答えて

4

私の質問です:フラグメントを使用することに利点がある場合 - なぜアクティビティを使用するのですか?

これは選択肢がないためです。アクティビティはAndroid基盤の一部です。たとえばランチャーアイコンを直接フラグメントに呼び出させることはできません。

ActivityクラスでsetHasOptionsMenu()を追加する際のポイントは何ですか?

多くのUIでは、「設定」、「ヘルプ」、「バージョン情報」など、特定のフラグメントとは関係のないアクションバーアイテムがあります。それらはアクティビティで定義するのは完全にうまくいきます。

私は何をアクティビティに入れなければならないのですか?

コンパイル、実行、そして確実にしたい限り、あなたが望むことは何でもできます。あなたは大まかに、断片を取り巻く3つの「思考の学校」にアプローチを分けることができます。

シンプルなものは、「断片は邪悪であり、破壊されなければならない」ということです。支持者は、別のもの(例えば、Square's Flow and Mortar)を代わりに使用する。

より複雑なものは、「有用な部分を使用する」ことです。美しさのような「有用」の定義は、見る者の目にある。に対処するためのViewPager

  • DialogFragmentで小さい画面
  • ページへの適応性を維持しながら、より大きな画面サイズをより良く利用するため

    • マスター/ディテールと類似の構造:だから、あなたは人々がフラグメントを使用し表示されます「断片ユーバーAlles氏」:構成の変更やダイアログ
    • など

    は、あなたの現在の位置は、思考の第三の学校です。この「有用な」シナリオとの違いは、明確に定義されていない場合でもフラグメントを適用することです。たとえば、(その唯一のUIが文書を示す実際に大きなWebViewで構成されている)は、WebViewWebViewFragmentのいくつかのサブクラスで管理することによって必ずしも恩恵を受けるわけではありません。 (例えば、あなたが大画面での活動の中で他のコンテンツと並んでいるようにするために)助けを必要とするまで、その「有用な」人々はその断片をスキップするでしょう。いつもWebViewFragment

  • +0

    ありがとう!この説明は私に多くの助けになりました:) –

    関連する問題