Android API 11 以降では、Google は という新しいクラスをリリースしましたFragment
。
動画では、Googleは可能な限り(リンク1、リンク2) では、アクティビティの代わりにフラグメントを使用すべきであると説明されていましたが、その理由は明確に説明されていませんでした。
フラグメントの目的とその使用法は何ですか (単純なビュー/レイアウトで簡単に実現できる UI の例以外)?
私の質問はフラグメントについてです:
- フラグメントを使用する目的は何ですか?
- アクティビティ/ビュー/レイアウトを使用する場合と比較して、フラグメントを使用する場合の利点と欠点は何ですか?
ボーナス質問:
- フラグメントの本当に興味深い使い方をいくつか教えていただけますか? Google が動画で言及していないようなことはありますか?
- フラグメントとそれを含むアクティビティ間で通信する最適な方法は何ですか?
- フラグメントを使用する際に覚えておくべき最も重要なことは何ですか? 経験から得たヒントや警告はありますか?
ベストアンサー1
#1 および #2 フラグメントを使用する目的は何ですか? また、アクティビティ/ビュー/レイアウトを使用する場合と比較して、フラグメントを使用することの利点と欠点は何ですか?
フラグメントは、再利用可能なユーザー インターフェースを作成するための Android のソリューションです。アクティビティとレイアウト (たとえば、インクルードの使用) を使用して、同じことのいくつかを実現できます。ただし、フラグメントは HoneyComb 以降の Android API に組み込まれています。詳しく説明します。
。
ActionBar
アプリをナビゲートするためにタブを上に表示したい場合は、インターフェイスがメソッドへの入力引数としてActionBar.TabListener
を提供することがすぐにわかります。おそらくこれを無視して、他の賢い方法を取ることもできますが、そうすると API と連携するのではなく、API に反することになります。FragmentTransaction
onTabSelected
ハンドル
FragmentManager
は、非常に巧妙な方法で「戻る」ことができます。「戻る」とは、通常のアクティビティのように、最後のアクティビティに戻るという意味ではありません。前のフラグメント状態に戻るという意味です。スワイプ インターフェイスを作成するには、cool を
ViewPager
a と共に使用します。コードは通常のアダプターよりもはるかに簡潔で、個々のフラグメントのインスタンス化を制御します。FragmentPagerAdapter
FragmentPagerAdapter
携帯電話とタブレットの両方に対応したアプリケーションを作成するときにフラグメントを使用すると、作業がずっと楽になります。フラグメントは Honeycomb+ API と密接に結びついているため、コードを再利用するために携帯電話でもフラグメントを使用したいと考えるでしょう。互換性ライブラリが役立つのは、まさにこのときです。
携帯電話専用のアプリでもフラグメントを使用できますし、使用すべきです。移植性を考慮する場合
ActionBarSherlock
。私は、バージョン 1.6 からずっと同じ外観の「ICS 風」アプリを作成するために、 と互換性ライブラリを使用しています。ActionBar
タブ、オーバーフロー、分割アクション バー、ビュー ページャーなどの最新の機能を利用できます。
ボーナス2
フラグメント間で通信する最良の方法はインテントです。フラグメント内の何かを押すと、通常はStartActivity()
そのデータを使用して呼び出します。インテントは、起動したアクティビティのすべてのフラグメントに渡されます。