1. ホーム
  2. android

[解決済み] FragmentとFragmentActivityの違いは何ですか?

2022-04-25 17:42:35

質問

質問ですが、明らかな継承の違いは別として、主な違いは何でしょうか? Fragment FragmentActivity ? それぞれのクラスは、どのようなシナリオに最適なのでしょうか?なぜこの2つのクラスが存在するのかを理解したいのですが...。

どのように解決するのですか?

A Fragment のセクションです。 Activity を、持っている。

  • 独自のライフサイクル
  • 独自の入力イベントを受信する
  • を追加または削除することができます。 Activity が実行中であることを示します。

A Fragment は常に Activity .

Fragments はHoneyComb(3.0)以前のAPIには含まれていません。もし Fragments を、HoneyComb よりも前のバージョンのプラットフォームをターゲットとするアプリに追加する必要があります。 サポートパッケージ をプロジェクトに追加し FragmentActivity を保持するために Fragments . その FragmentActivity クラスは Fragments であるのに対し Activity クラスは、HoneyComb以前は、そうではありません。

HoneyComb以降のみを対象とするプロジェクトでは、以下のように Activity であり FragmentActivity を保持するために Fragments .

いくつかの詳細を説明します。

使用方法 android.app.FragmentActivity . 使用方法 android.support.v4.app.Fragment とともに FragmentActivity . サポートパッケージは追加しないでください FragmentActivity を投げるとExceptionが発生するため。

気をつけるべきこと FragmentManagerLoaderManager は、FragmentActivityのサポートバージョンが分かれています。

を使用している場合は Fragment の中に Activity (HoneyComb以上)を呼び出すと

  • getFragmentManager() を取得します。 android.app.FragmentManager
  • getLoaderManager() を取得する android.app.LoaderManager

を使用している場合 Fragment の中に FragmentActivity (HoneyComb以前)と呼びます。

  • getSupportFragmentManager() を取得します。 android.support.v4.app.FragmentManager .
  • getSupportLoaderManager() を取得します。 android.support.v4.app.LoaderManager

ということで ドンマイ する

//don't do this
myFragmentActivity.getLoaderManager(); 
//instead do this:
myFragmentActivity.getSupportLoaderManager();

または

//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()

また、知っておくと便利なのは、フラグメントは Activity の一部である必要はありません。 Activity レイアウトになります。それ自身のUIを持たず、アクティビティの不可視のワーカーとして使用することができます。