web-dev-qa-db-ja.com

Android Fragmentsを使用する理由は?

私はドキュメントを読み、このトピックについて 他のいくつかの質問のスレッド を読みましたが、確信が持てません。このテクニックの使用の限界ははっきりとはわかりません。

フラグメントはベストプラクティスとして表示されるようになりました; すべてのアクティビティは、基本的に1つ以上のフラグメントのサポートであり、レイアウトを直接呼び出さないでください。

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

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

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

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

  4. Androidアプリケーションはアクティビティに基づいています...アクティビティに別のライフサイクルを追加する方がアプリケーションを設計する方が良いでしょう...モジュール、シナリオ、データ管理、 ===>これは、Android SDKおよびAndroid Framework with withフラグメントのビジョンです。私はそれが間違っているとは思いませんが、それが良い結果をもたらすかどうかはわかりません...そしてそれは本当に抽象的なものです...

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

15
ahmed_khan_89

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

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

さて...

====>なぜ私は自分の人生を複雑にし、さらにコーディングするのですか... ??

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

5
Zeus

フラグメントの懐疑論者の「ゲートウェイ」ユースケースがある場合、それはおそらく対話です。廃止予定の長いメソッドshowDialog(...)onCreateDialog(...)などは、ホスティングアクティビティが破棄および再作成されたときに、フレームワークがそれらを呼び出してダイアログを自動的に破棄および再作成するという点で優れていました。独自のダイアログを直接作成する場合は、それらすべてを自分で管理する必要があります。ただし、DialogFragmentを使用する場合は、フレームワークにそれらを管理させることができます。この場合、フラグメントは大幅に単純化コーディングできます。

5
Kevin Krumwiede

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

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

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

利点:

1 /コードをモジュール化すると、1つのアクティビティで完全なフローを分離されたフラグメントにまとめることができます。例:+リスト/グリッド&詳細、+ログイン&登録&パスワードを忘れた、+など。これは、再利用可能なコードを取得するのに最適であり、さまざまなプロジェクトでいつでもコピーして貼り付けることができます。

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

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

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

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

そして他の多くの...

特にカメラのケースでは、まだアクティビティを唯一のコンテナーとして使用しています。一部のAndroid APIおよび一部のサードパーティライブラリは、フラグメントで実装するのが容易ではありません。

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

これが役に立てば幸いです!!!

1
ahmed_khan_89