なぜフラグメントなのか、そしていつアクティビティの代わりにフラグメントを使用するのか?

519
android developer 2012-05-07 21:23.

Android API 11以降で、Googleはと呼ばれる新しいクラスをリリースしましたFragment

動画では、Googleは可能な限り(ことを示唆しているリンク1、リンク2)、私たちが代わりに活動の断片を使用する必要がありますが、彼らは正確に理由を説明しませんでした。

フラグメントの目的とそれらのいくつかの可能な使用法(単純なビュー/レイアウトで簡単に実現できるいくつかのUIの例を除く)は何ですか?

私の質問はフラグメントについてです:

  1. フラグメントを使用する目的は何ですか?
  2. アクティビティ/ビュー/レイアウトを使用する場合と比較して、フラグメントを使用する場合の長所と短所は何ですか?

ボーナスの質問:

  1. フラグメントの本当に興味深い使用法をいくつか挙げていただけますか?グーグルが彼らのビデオで言及しなかったこと?
  2. フラグメントとフラグメントを含むアクティビティの間で通信するための最良の方法は何ですか?
  3. フラグメントを使用するときに覚えておくべき最も重要なことは何ですか?あなたの経験からのヒントや警告はありますか?

11 answers

296
Glenn Bech 2012-05-10 02:11.

#1と#2フラグメントを使用する目的は何ですか?アクティビティ/ビュー/レイアウトを使用する場合と比較してフラグメントを使用することの長所と短所は何ですか?

フラグメントは、再利用可能なユーザーインターフェースを作成するためのAndroidのソリューションです。アクティビティとレイアウトを使用して(たとえば、インクルードを使用して)、同じことのいくつかを実現できます。しかしながら; フラグメントは、HoneyComb以降からAndroidAPIに接続されます。詳しく説明させてください。

  • ActionBar。そこにあるタブでアプリをナビゲートしたい場合は、ActionBar.TabListenerインターフェースがメソッドFragmentTransactionへの入力引数としてを提供していることがすぐにわかりますonTabSelected。おそらくこれを無視して、何か他の賢いことをすることができますが、APIではなくAPIに対して作業することになります。

  • FragmentManager非常に巧妙な方法であなたのためにハンドル«戻ります»。戻るとは、通常のアクティビティのように、最後のアクティビティに戻ることを意味するものではありません。これは、前のフラグメント状態に戻ることを意味します。

  • クールViewPagerを使用して、FragmentPagerAdapterスワイプインターフェイスを作成できます。FragmentPagerAdapterコードは、通常のアダプタよりもはるかにきれいであり、それは個々のフラグメントのインスタンスを制御します。

  • 携帯電話とタブレットの両方のアプリケーションを作成しようとするときにフラグメントを使用すると、生活がはるかに楽になります。フラグメントはHoneycomb + APIと非常に密接に関連しているため、コードを再利用するために電話でも使用する必要があります。そこで、互換性ライブラリが役に立ちます。

  • 電話専用のアプリにフラグメントを使用することもできますし、使用する必要があります。移植性を念頭に置いている場合。とActionBarSherlock互換性ライブラリを使用して、バージョン1.6までずっと同じように見える「ICSのような」アプリを作成します。ActionBarタブ、オーバーフロー、分割アクションバー、ビューページャーなどの最新機能を利用できます。

ボーナス2

フラグメント間で通信するための最良の方法はインテントです。フラグメント内の何かを押すと、通常StartActivity()はそのデータを使用して呼び出します。インテントは、起動したアクティビティのすべてのフラグメントに渡されます。

74
Nikolay Elenkov 2012-05-07 21:37.

参照しているビデオはわかりませんが、直接交換できないため、アクティビティではなくフラグメントを使用する必要があると言われているとは思えません。開発ガイドには実際にはかなり詳細なエントリがあります。詳細については、それを読むことを検討してください。

つまり、フラグメントはアクティビティ内に存在し、各アクティビティは多くのフラグメントをホストできます。アクティビティと同様に、特定のライフサイクルがあります。アクティビティとは異なり、トップレベルのアプリケーションコンポーネントではありません。フラグメントの利点には、コードの再利用とモジュール性(たとえば、多くのアクティビティで同じリストビューを使用する)が含まれ、マルチペインインターフェイスを構築する機能(主にタブレットで役立ちます)が含まれます。主な欠点は、(いくつかの)複雑さが増すことです。通常、(カスタム)ビューを使用して、非標準で堅牢性の低い方法で同じことを実現できます。

51
mani 2014-05-24 03:26.

フラグメントは、よりモジュール化されたアクティビティ設計を可能にするアクティビティに配置できるアプリケーションのユーザーインターフェイスまたは動作の一部です。フラグメントが一種のサブアクティビティであると言えば間違いではありません。

フラグメントに関する重要なポイントは次のとおりです。

  1. フラグメントには、独自のレイアウトと、独自のライフサイクルコールバックを備えた独自の動作があります。

  2. アクティビティの実行中に、アクティビティのフラグメントを追加または削除できます。

  3. 1つのアクティビティで複数のフラグメントを組み合わせて、マルチペインUIを構築できます。

  4. フラグメントは複数のアクティビティで使用できます。

  5. フラグメントのライフサイクルは、そのホストアクティビティのライフサイクルと密接に関連しています。

  6. アクティビティが一時停止されると、アクティビティで使用可能なすべてのフラグメントも停止します。

  7. フラグメントは、ユーザーインターフェイスコンポーネントを持たない動作を実装できます。

  8. フラグメントは、APIバージョン11を使用してAndroid 3(Honeycomb)のAndroidAPIに追加されました。

詳細については、公式サイトのフラグメントをご覧ください。

22
Kaveesh Kanwal 2015-09-04 18:23.

これは私がフラグメントで見つけた重要な情報です:

これまで、Androidアプリの各画面は個別のアクティビティとして実装されていました。Android Intentメカニズムでは、アクティビティ間で直接参照型(つまりオブジェクト)を渡すことができないため、これにより、画面間で情報を渡す際に問題が発生します。代わりに、オブジェクトをシリアル化するか、グローバルにアクセス可能な参照を使用できるようにする必要があります。

各画面を個別のフラグメントにすることで、このデータ通過の頭痛の種を完全に回避できます。フラグメントは常に特定のアクティビティのコンテキスト内に存在し、常にそのアクティビティにアクセスできます。対象の情報をアクティビティ内に保存することにより、各画面のフラグメントは、アクティビティを介してオブジェクト参照に簡単にアクセスできます。

ソース: https://www.pluralsight.com/blog/software-development/android-fragments

16
Chandrima Bhattacharjee 2018-06-29 13:14.

アクティビティは、ツールバーを備えたアプリのフルスクリーンコンポーネントであり、その他はすべてフラグメントであることが望ましいです。ツールバーを備えた1つのフルスクリーンの親アクティビティには、複数のペイン、スクロール可能なページ、ダイアログなど(すべてのフラグメント)を含めることができます。これらはすべて、親からアクセスでき、親を介して通信できます。

例:

アクティビティA、アクティビティB、アクティビティC:

  • たとえば、基本的なツールバーを表示するため、または親アクティビティから継承するために、すべてのアクティビティで同じコードを繰り返す必要があります(管理が面倒になります)。
  • あるアクティビティから別のアクティビティに移動するには、それらすべてをメモリ内(オーバーヘッド)に置くか、一方を破棄してもう一方を開く必要があります。
  • アクティビティ間の通信は、インテントを介して行うことができます。

vs

アクティビティA、フラグメント1、フラグメント2、フラグメント3:

  • コードの繰り返しはありません。すべての画面には、その1つのアクティビティのツールバーなどがあります。
  • あるフラグメントから次のフラグメントに移動するいくつかの方法-ページャーの表示、マルチペインなど。
  • アクティビティにはほとんどのデータがあるため、必要なフラグメント間の通信は最小限です。それでも必要な場合は、インターフェイスを介して簡単に実行できます。
  • フラグメントはフルスクリーンである必要はなく、設計に多くの柔軟性があります。
  • ビューが必要ない場合、フラグメントはレイアウトを膨らませる必要はありません。
  • 複数のアクティビティで同じフラグメントを使用できます。
8
Nithin Baby 2014-12-16 06:59.

フラグメントは、すべてのページにナビゲーションドロワーを保持したい場合などに特に役立ちます。フレームレイアウトを必要なフラグメントで膨らませても、ナビゲーションドロワーにアクセスできます。

アクティビティを使用した場合は、すべてのアクティビティでドロワーを保持する必要があり、コードが冗長になります。これは、フラグメントの興味深い使用法の1つです。

私はAndroidを初めて使用しますが、フラグメントがこのように役立つと思います。

5
einschnaehkeee 2015-05-17 22:16.

私はこれがすでに死ぬまで議論されたことを知っています、しかし私はいくつかのポイントを追加したいと思います:

  • フラグを使用してMenusにデータを入力MenuItemし、クリックを独自に処理できます。したがって、アクティビティにさらに変調オプションを提供します。アクティビティが知らないうちにContextualActionBarなどを実行でき、基本的にアクティビティが処理する基本的なもの(ナビゲーション/設定/バージョン情報)から切り離すことができます。

  • 親フラグと子フラグを使用すると、コンポーネントをモジュール化するためのオプションをさらに選択できます。たとえば、フラグを簡単に交換したり、新しいフラグをポケットベル内に配置したり、削除したり、再配置したりできます。あなたのアクティビティがそれについて何も知らなくても、より高いレベルのものに焦点を合わせるだけです。

1
Prithiv Dharmaraj 2017-09-05 01:50.

1.フラグメントを使用する目的は?

  • 回答:
    1. デバイスのフォームファクタの違いに対処する。
    2. アプリ画面間で情報を渡す。
    3. ユーザーインターフェイスの構成。
    4. 高度なUIメタファー。
0
maniix 2016-05-16 02:46.

フラグメントはアクティビティ内に存在し、次のものがあります。

  • 独自のライフサイクル
  • 独自のレイアウト
  • 独自の子フラグメントなど。

フラグメントは、それが属するメインアクティビティのサブアクティビティと考えてください。フラグメント自体は存在できず、何度も呼び出し/再利用できます。お役に立てれば :)

0
superkytoz 2015-12-15 01:15.

フラグメントはアクティビティ内に存在しますが、アクティビティはそれ自体で存在します。

0
Meenohara 2020-07-07 23:47.

上記の回答に加えて、Playストアでリリースしたアプリの例を使用して説明します。

これは私がAndroidを学んだときに開発した最初のアプリでした。以前はアクティビティのみを扱っていました。12について考えるアクティビティページが複数あります。これらのほとんどは他のページで再利用できるコンテンツを持っていましたが、ほとんどの場合、別のアクティビティページになりました。アプリをクリックするたびに。フラグメントを学ぶと、すべての再利用可能なものを実装してフラグメントを分離し、ごくわずかなアクティビティで使用する方法に気づきました。私のユーザーには違いが見られないかもしれませんが、フラグメントが軽量であることに加えて、再利用性とモジュール性を除けば、より少ないコードで同じことができます。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

アトランタのドナ・ブラジル:「私があなたに私の話をするとき私を踏まないでください」

アトランタのドナ・ブラジル:「私があなたに私の話をするとき私を踏まないでください」

2017年11月19日にアトランタで開催されたドナブラジルとモーアイボリー(ダグスミスフォトグラフィー)ドナブラジルを見逃すことはありません。

彼らは北朝鮮から脱出した亡命者の胃の中に奇妙な寄生虫を見つけました

彼らは北朝鮮から脱出した亡命者の胃の中に奇妙な寄生虫を見つけました

画像:ゲッティ陰謀愛好家は新しくてエキサイティングなディスカッション資料を持っています:国境を越えて韓国に5発撃たれた北朝鮮の脱北者は寄生虫でいっぱいで、そのうちの1人は南のメディアは、寄生虫を持った北朝鮮の脱北者を見つけることは珍しいことではないと報告している、実際、男性が30以上のタイプを持っていたケースがあった。

パニッシャーの第2話は、複雑な陰謀の網を織り交ぜています

パニッシャーの第2話は、複雑な陰謀の網を織り交ぜています

写真:パニッシャー(Netflix)これらのMarvel Netflixが愛していることが1つあるとすれば、それは複雑な政府や企業の陰謀です。そして、なぜこれらのショーがそのルートを選択するのかを理解するのは簡単です。

最新のBoseヘッドフォンは音楽を聴くためのものではなく、パートナーの鼻を鳴らすためのものです。

最新のBoseヘッドフォンは音楽を聴くためのものではなく、パートナーの鼻を鳴らすためのものです。

あなたのパートナーはチェーンソーのように詮索し、あなたを眠らせませんか?あなたのパートナーはあなたがチェーンソーのように詮索したと主張しますが、あなたが詮索しないので彼らは彼の想像ですか?あなたのケースが何であれ、Bose(はい、ハイエンドオーディオ機器のメーカー)はあなたのために何かを持っています。それらはBoseSleepbudsと呼ばれます。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language