Androidフラグメントを使用する理由


15

このトピックに関するドキュメントと他のいくつかの質問のスレッドを読みましたが、私は本当に納得しません。この技術の使用の限界がはっきりとはわかりません。

フラグメントは現在、ベストプラクティスと見なされています。すべてのアクティビティは基本的に1つ以上のフラグメントのサポートであり、レイアウトを直接呼び出すことはありません。

フラグメントは次の目的で作成されます。

  1. Activity多くのフラグメントの使用、それらの間の変更、これらのユニットの再利用を許可します... ==>はアクティビティにFragment完全に依存しているContextため、多くのアクティビティで再利用および処理できるジェネリックが必要な場合は、独自のカスタムレイアウトまたはビューを作成します...フラグメントが追加するこの追加の複雑さ開発レイヤーについては気にしません。

  2. 異なる解像度へのより良い処理==>長時間のプロセスの場合、タブレットの同じアクティビティで2つ(またはそれ以上)のフラグメントを表示し、電話で1つずつ表示できるタブレット/電話の場合はOKです。しかし、なぜフラグメントを常に使用するのでしょうか?

  3. フラグメント間を移動するためのコールバックの処理(つまり、ユーザーがログインしている場合はフラグメントを表示し、そうでない場合は別のフラグメントを表示します)。===>フェイスブックSDKログインがこのために持っているバグの数を見てみて、それが本当に(?)であることを理解してください...

  4. Androidアプリケーションはアクティビティに基づいていることを考慮すると...仕方。===>これは、フラグメントSDKを使用してAndroid SDKとAndroid Frameworkを見ることに慣れている人の答えです。間違っているとは思いませんが、良い結果が得られるかどうかわかりません...そしてそれは本当に抽象的です...

====>常に使用することで、コーディングが増えて生活が複雑になるのはなぜですか?それ以外の場合、それがいくつかの場合の単なるツールである場合、なぜそれがベストプラクティスであるのですか?これらのケースは何ですか?


1
あなたが何を求めているのかは不明です。おそらく利点の列挙とそれぞれに対するあなたの批判の下に、質問を要約してください。
logc 14年

詳細な質問を追加しました。
ahmed_khan_89 14年

@logcのように迷っています。これらのケースをフラグメントなしでどのように処理しますか?
neontapir

(1)カスタムジェネリックコントロールを作成し、必要な場所で再利用する(2)2つのアクティビティを使用してstartActivityForResultでナビゲートする、または単にビューを切り替える(表示/非表示、拡大/削除...)あまりコーディングせずに...(3)ビューのあるアクティビティでもコールバックを使用できます(4)このトピックを議論するときに常に得られる抽象的な答えです...さらに説明が必要です...
ahmed_khan_89

1
うーん。このQ&Aは、元のポスターが「最良の」回答を選択するスタック交換の設計の制限を示しています。(誰もが投票するslant.coとは対照的に。)このような広範な質問には理想的ではありません。ここで、あいまいな質問は、質問者が聞きたいことと明らかに一致する受け入れられた答えを取得します。自分の状況でフラグメントを使用する理由がない場合は、使用しないでください。より良い質問は、フラグメントアクティビティの長所/短所を尋ねることです。そして、その正確なトピックに関する多くのスレッドがあります。
ToolmakerSteve

回答:


5

フラグメントは、アクティビティのモジュラーセクションであり、独自のライフサイクルを持ち、独自の入力イベントを受け取ります。アクティビティの実行中に追加または削除できます(さまざまなアクティビティで再利用できる「サブアクティビティ」のようなもの)

フラグメントを使用することの明確な利点、さまざまな画面でのUI最適化は別として、目に見えるユーザーインターフェイスコンポーネントなしでアクティビティのバックグラウンド処理を管理できます。

今...

====>どうしてもっとコーディングするのに人生が複雑になるのですか...?

推奨されていますが、個々の要素のライフサイクルを制御したり、以前のビューのスタック状態や履歴を再利用したりする必要がない限り、その必要はありません。


5

フラグメント懐疑論者に「ゲートウェイ」のユースケースがある場合は、おそらくダイアログです。長い非推奨の方法showDialog(...)onCreateDialog(...)など、ホスティング活動が破壊され、再作成されたときに、フレームワークが自動的にダイアログを破壊し、再作成するためにそれらを呼び出すということで素敵でした。独自のダイアログを直接作成する場合、それらすべてを自分で管理する必要があります。ただし、を使用するDialogFragment場合は、フレームワークにもう一度管理させることができます。この場合、フラグメントはコーディングを大幅に簡素化できます。


1

1年以上前にこの質問をしました。

私は毎日フラグメントを使用していますが、お勧めします。

まず、フラグメントの使用は単なるオプションであり、フラグメントの使用を開始したらそれを検討するための反射になると言いたいと思います。

利点:

1/1つのアクティビティで完全なフローを分離したフラグメントで使用できるコードをモジュール化するのに役立ちます。例:+リスト/グリッドと詳細、+ログインと登録&パスワードを忘れる、など。

2 /あなたは新しいライフサイクルを手に入れました。これは本当のことですが、利点もあります。例:保持されたインスタンスフラグメントは、方向の問題を解決するため、素晴らしいです。

3 /アクティビティのイベントとリスナーによってフラグメントのフローを管理できます。

4 /アクティビティ内のフラグメントのスタック。

5 /多くの画面で同じアクションバーを使用します。

そして、他の多くの...

特にカメラの場合は、まだアクティビティを唯一のコンテナとして使用しています。一部のAndroid APIおよび一部のサードパーティライブラリは、フラグメントで簡単に実装できません。

まあ、それはあらゆるツールのようなものであり、あなたはそれを考慮し、それをケースなどで使用する方が良いかどうかを自分で判断しなければなりません。

これが役立つことを願っています!!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.