フラグメント

アクティビティ内でホストされる複数の独立した画面にアプリを分割します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2026 年 9 月 23 日 1.9.1 - - -

依存関係の宣言

フラグメントへの依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

dependencies {
    def fragment_version = "1.9.1"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Compose
    implementation "androidx.fragment:fragment-compose:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version"
    androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Kotlin

dependencies {
    val fragment_version = "1.9.1"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.9

バージョン 1.9.1

2026 年 9 月 23 日

androidx.fragment:fragment-*:1.9.1 がリリースされました。バージョン 1.9.1 にはこれらの commit が含まれています。

バージョン 1.9.0

2026 年 8 月 12 日

androidx.fragment:fragment-*:1.9.0 がリリースされました。バージョン 1.9.0 にはこれらの commit が含まれています。

1.8.0 以降の重要な変更:

  • Fragment に ContextAware インターフェースが実装され、フラグメントがアタッチされたときにコードを実行するために使用できるようになりました。
  • AndroidFragment コンポーザブルが maxLifecycle パラメータを受け入れるようになりました。このパラメータを使用すると、埋め込まれた Fragment のライフサイクル状態を制限できます。
  • Fragment ライブラリが Jetpack Tracing を介したライフサイクル イベントのシステム トレースをサポートするようになりました。

バージョン 1.9.0-rc01

2026 年 7 月 29 日

androidx.fragment:fragment-*:1.9.0-rc01 がリリースされました。バージョン 1.9.0-rc01 にはこれらの commit が含まれています。

バグの修正

  • FragmentScenario.launchInContainer を使用すると、テスト対象のフラグメントが FragmentContainerView の内部に配置されるようになります。(Ia6273、b/531550353)

バージョン 1.9.0-alpha02

2026 年 7 月 1 日

androidx.fragment:fragment-*:1.9.0-alpha02 がリリースされました。バージョン 1.9.0-alpha02 に含まれる commit については、こちらをご覧ください。

API の変更

  • AndroidFragment コンポーザブルに maxLifecycle パラメータを追加します。これにより、埋め込み Fragment のライフサイクル状態を制限できるため、ページャーやタブなどの複雑な UI 設定でその動作をより細かく制御できます。(Ie99b5、b/526109804)
  • Fragment ライブラリが Jetpack Tracing を介したライフサイクル イベントのシステム トレースをサポートするようになりました。(Ibc63b、b/112161409)

バージョン 1.9.0-alpha01

2026 年 6 月 17 日

androidx.fragment:fragment-*:1.9.0-alpha01 がリリースされました。バージョン 1.9.0-alpha01 に含まれる commit については、こちらをご覧ください。

API の変更

  • Fragment に ContextAware インターフェースが実装され、フラグメントがアタッチされたときにコードを実行できるようになりました。(I38019、b/477255355)

バグの修正

  • 予測型「戻る」ジェスチャー中にアクティビティがバックグラウンドに送られたときに発生する、フラグメントのクラッシュを修正しました。(I55734、b/389589678)
  • UnsafeFragmentLifecycleObserverDetector がコンポジション内で実行されなくなりました。(Ic4176、b/501504696)
  • [Fragment 1.8.9 以降] 非表示オペレーションをポップする予測型「戻る」ジェスチャーをキャンセルすると、アニメーターを使用している場合に後続のジェスチャーが正しくアニメーション化されない問題を修正しました。(I0a400、b/384765586)
  • [Fragment 1.8.9 から] setMaxLifecycle と popBackStack の組み合わせで、最上位のフラグメントを RESUMED に移動できないエラーを修正しました。(I3448b、b/406127576)
  • [Fragment 1.8.8 から] setMaxLifecycle(Lifecycle.State.INITIALIZED) で追加された Fragment の状態を保存しようとすると FragmentManager がクラッシュする問題を修正しました。これらのフラグメントは onCreate() を経由していないため、保存された状態や onSaveInstanceState() の呼び出しがなくなりました。(I6e37a、b/408163315)
  • [Fragment 1.8.7 から] 同じフレーム内で pop と replace のオペレーションを行った後、FragmentManager が適切な状態にならず、予測型「戻る」と組み合わせて使用するとクラッシュする可能性がある問題を修正しました。(I50ad1、b/380288461)
  • [Fragment 1.8.6 から] FragmentContainerView の setOnApplyWindowInsetsListener オーバーライドで null リスナーが使用できるようになりました。(I575f0、b/282790626)
  • [Fragment 1.8.5 から] 予測型「戻る」ジェスチャーがキャンセルまたは中断された後にのみ saveBackStack によってトリガーされる IllegalStateException を修正しました。(I3387d、b/342419080)
  • [Fragment 1.8.4 から] AndroidFragment インスタンスが使用している Class を動的に入れ替えるときに AndroidFragment で発生する UninitializedPropertyAccessException を修正しました。(I12dea、b/365578408)
  • [Fragment 1.8.4 以降] システムの [戻る] ボタンをすばやく押すか、ジェスチャーで戻る操作をすばやく行うと、フラグメントがクラッシュする問題を修正しました。(Ibc038、b/364804225、b/364914301)
  • [Fragment 1.8.4 から] 予測型「戻る」ジェスチャーを中断すると、フラグメント マネージャーが未定義の状態になり、間違ったフラグメントが表示されるフラグメントの問題を修正しました。(If82e2、b/338624457)
  • [Fragment 1.8.3 以降] 包含するアクティビティ/フラグメントの状態がすでに保存されているときに AndroidFragment がコンポジションに追加されても、クラッシュしなくなりました。(I985e9、b/356643968)
  • [Fragment 1.8.2 から] FragmentManager に保留中のオペレーションがあるときにシステムの戻るボタンをトリガーしても、範囲外例外が発生しなくなりました。(I9ba32、b/342316801)
  • [Fragment 1.8.2 から] 親フラグメントがフラグメント バックスタックに配置された場合でも、AndroidFragment が適切に処理されるようになりました。これにより、そのフラグメントに戻る際に「No view found for id」という問題が発生しなくなります。(I94608、b/347706985)
  • [Fragment 1.8.2 以降] ViewGroup を受け取る FragmentTransaction.add メソッドで追加されたフラグメントが、onStart() に進む前に onContainerAvailable を待つようになりました。これは、AndroidFragment などの API のユーザーに影響します。 は、onStart() を介して移動する前に、 AndroidFragment が コンポジションに再度入るのを待つようになりました。(I94608、b/347706985)
  • [Fragment 1.8.1 から] コンテナのないフラグメントが予測型「戻る」ジェスチャーの開始時にすぐに破棄される問題を修正しました。(If6b83、b/345244539)

外部からの協力

  • fragment-ktx を fragment ライブラリにマージします。すべての Kotlin 拡張機能がメインのフラグメント アーティファクトに含まれるようになりました。fragment-ktx は互換性のために空のアーティファクトになりました。Jake Wharton さん、ありがとうございました。(Idabaa)

バージョン 1.8

バージョン 1.8.9

2025 年 8 月 13 日

androidx.fragment:fragment-*:1.8.9 がリリースされました。バージョン 1.8.9 にはこれらの commit が含まれています。

バグの修正

  • 非表示オペレーションをポップする予測型「戻る」ジェスチャーをキャンセルすると、アニメーターを使用している場合に後続のジェスチャーが正しくアニメーション化されない問題を修正しました。(I0a400、b/384765586)
  • setMaxLifecycle と popBackStack の組み合わせで、最上位のフラグメントを RESUMED に移動できないエラーを修正しました。(I3448b、b/406127576)

バージョン 1.8.8

2025 年 6 月 4 日

androidx.fragment:fragment-*:1.8.8 がリリースされました。バージョン 1.8.8 にはこれらの commit が含まれています。

バグの修正

  • setMaxLifecycle(Lifecycle.State.INITIALIZED) で追加されたフラグメントの状態を保存しようとすると FragmentManager がクラッシュする問題を修正しました。これらのフラグメントは onCreate() を経由していないため、保存された状態や呼び出された onSaveInstanceState() がなくなります。(I6e37a)

バージョン 1.8.7

2025 年 5 月 20 日

androidx.fragment:fragment-*:1.8.7 がリリースされました。バージョン 1.8.7 にはこれらの commit が含まれています。

バグの修正

  • 同じフレーム内でポップ オペレーションと置換オペレーションを行った後、FragmentManager が適切な状態にならず、popBackStack または予測型「戻る」ジェスチャーでバックスタックをポップするとクラッシュが発生する可能性がある問題を修正しました。(I50ad1)
  • AndroidX Transitions を使用し、連続する Fragment トランザクションが開始されていない遷移をキャンセルしようとし、AndroidX Transition ライブラリが遷移状態を適切にクリアしない場合に発生するクラッシュを修正しました。(b/414612221 を参照)。(Ib5235)

バージョン 1.8.6

2025 年 2 月 12 日

androidx.fragment:fragment-*:1.8.6 がリリースされました。バージョン 1.8.6 にはこれらの commit が含まれています。

バグの修正

  • FragmentContainerView の setOnApplyWindowInsetsListener オーバーライドが、フレームワークで許可されているものと一致するように、null リスナーを受け取るようになりました。(I575f0、b/282790626)

バージョン 1.8.5

2024 年 10 月 30 日

androidx.fragment:fragment-*:1.8.5 がリリースされました。バージョン 1.8.5 にはこれらの commit が含まれています。

バグの修正

  • 予測型「戻る」ジェスチャーがキャンセルまたは中断された後にのみ saveBackStack によってトリガーされる IllegalStateException を修正(I3387d、b/342419080)

バージョン 1.8.4

2024 年 10 月 2 日

androidx.fragment:fragment-*:1.8.4 がリリースされました。バージョン 1.8.4 にはこれらの commit が含まれています。

バグの修正

  • Androidx Transitions を使用している場合に、システムの [戻る] ボタンをすばやく押すか、ジェスチャーで戻る操作をすばやく行うと、フラグメントがクラッシュする問題を修正しました。(Ibc038、b/364804225)
  • 予測型「戻る」ジェスチャーを中断すると、フラグメント マネージャーが未定義の状態になり、間違ったフラグメントが表示されるフラグメントの問題を修正しました。(If82e2、b/338624457)
  • AndroidFragment インスタンスが使用している Class を動的に入れ替える場合に AndroidFragment で発生する UninitializedPropertyAccessException の問題を修正しました。(I12dea)

バージョン 1.8.3

2024 年 9 月 4 日

androidx.fragment:fragment-*:1.8.3 がリリースされました。バージョン 1.8.3 にはこれらの commit が含まれています。

バグの修正

  • FragmentManager が、予測型「戻る」ジェスチャーを処理する際に保留中のオペレーションを正しく考慮するようになりました。これにより、システム バックアップを実行しても IndexOutOfBoundsException が発生しなくなります。(I9ba32、b/342316801)
  • コンテナ アクティビティ/フラグメントの状態がすでに保存されているときにコンポジションに追加された場合、AndroidFragment がクラッシュしなくなりました。(I985e9、b/356643968)

バージョン 1.8.2

2024 年 7 月 24 日

androidx.fragment:fragment-*:1.8.2 がリリースされました。バージョン 1.8.2 にはこれらの commit が含まれています。

バグの修正

  • 親フラグメントがフラグメント バックスタックに配置された場合でも、AndroidFragment が適切に処理されるようになりました。これにより、そのフラグメントに戻ったときに「No view found for id」という問題が発生しなくなります。(I94608)
  • ViewGroup を受け取る FragmentTransaction.add メソッドを介して追加されたフラグメントが、onStart() に進む前に onContainerAvailable を待つようになりました。これは、AndroidFragment などの API のユーザーに影響します。 は、AndroidFragment がコンポジションに再度入るまで待ってから、onStart() を介して移動するようになりました。(I94608)

バージョン 1.8.1

2024 年 6 月 26 日

androidx.fragment:fragment-*:1.8.1 がリリースされました。バージョン 1.8.1 にはこれらの commit が含まれています。

バグの修正

  • コンテナのないフラグメントが予測型「戻る」ジェスチャーの開始時にすぐに DESTROYED になる問題を修正しました。ジェスチャーが完了するまで CREATED 状態になります。(If6b83、b/345244539)

バージョン 1.8.0

2024 年 6 月 12 日

androidx.fragment:fragment-*:1.8.0 がリリースされました。バージョン 1.8.0 にはこれらの commit が含まれています。

1.7.0 以降の重要な変更

  • fragment-compose アーティファクトに、フラグメント クラス名を使用して Compose 階層にフラグメントを追加できる AndroidFragment Composable が追加されました。フラグメントの状態の保存と復元を自動的に処理します。これは、以前に推奨されていた AndroidViewBinding を使用してフラグメントを拡張する方法の直接的な代替として使用する必要があります。
  • FragmentManager の OnBackStackChangedListener インターフェースの onBackStackChangeCancelled コールバックが、FragmentManager でのオペレーションの実行の一部として発火するようになり、onBackStackChangeCommitted コールバックのタイミングに近づきました。

バージョン 1.8.0-rc01

2024 年 5 月 29 日

androidx.fragment:fragment-*:1.8.0-rc01 がリリースされました。バージョン 1.8.0-rc01 には、これらの commit が含まれています。

バグの修正

  • FragmentManagers OnBackStackChangedListener インターフェースの onBackStackChangeCancelled コールバックが FragmentManager でのオペレーションの実行の一部として発火するようになり、onBackStackChangeCommitted コールバックのタイミングに近づきました。(I5ebfb、b/332916112)

バージョン 1.8.0-beta01

2024 年 5 月 14 日

androidx.fragment:fragment-*:1.8.0-beta01 がリリースされました。バージョン 1.8.0-beta01 にはこれらの commit が含まれています。

バグの修正

  • Fragment 1.7.1 から: 予測型「戻る」は、すべてのフラグメントに Animator またはシーク可能な Androidx Transition のいずれかがあるトランザクションでのみ実行されるようになりました。これにより、部分的にシーク可能なトランザクションをキャンセルすると画面が黒くなる問題が修正されます。(I43037、b/339169168)

バージョン 1.8.0-alpha02

2024 年 4 月 17 日

androidx.fragment:fragment-*:1.8.0-alpha02 がリリースされました。バージョン 1.8.0-alpha02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment 1.7.0-rc02: 他のトランジションなしで sharedElement を設定すると実行に失敗する理由を示すログを追加しました。(Iec48e)
  • Fragment 1.7.0-rc02: シークできない共有要素が、他のすべての遷移がシーク可能なトランザクションに追加されると、クラッシュが発生するバグを修正しました。これで、トランザクションは正しくシーク不可と見なされます。(I18ccd)

バージョン 1.8.0-alpha01

2024 年 4 月 3 日

androidx.fragment:fragment-*:1.8.0-alpha01 がリリースされました。バージョン 1.8.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • 新しい AndroidFragment Composable を使用すると、フラグメント クラス名を使用して Compose 階層にフラグメントを追加できます。フラグメントの状態の保存と復元を自動的に処理します。これは、AndroidViewBinding Composable の直接の代替として使用できます。(b/312895363、Icf841)

ドキュメントの変更

  • OnBackStackChangedListener API のドキュメントを更新し、呼び出しのタイミングと使用方法を示しました。(I0bfd9)

依存関係の更新

バージョン 1.7

バージョン 1.7.1

2024 年 5 月 14 日

androidx.fragment:fragment-*:1.7.1 がリリースされました。バージョン 1.7.1 にはこれらの commit が含まれています。

バグの修正

  • 予測型「戻る」は、すべてのフラグメントに Animator またはシーク可能な Androidx Transition のいずれかがあるトランザクションでのみ実行されるようになりました。これにより、部分的にシーク可能なトランザクションをキャンセルすると画面が空白になる問題を修正します。(I43037、b/339169168)

バージョン 1.7.0

2024 年 5 月 1 日

androidx.fragment:fragment-*:1.7.0 がリリースされました。バージョン 1.7.0 にはこれらの commit が含まれています。

予測型「戻る」ジェスチャーのサポート

  • フラグメントが、Animator を使用している場合、または AndroidX Transition 1.5.0 を使用している場合に、アプリ内予測型「戻る」をサポートするようになりました。これにより、ユーザーは「戻る」ジェスチャーを使用して、Animator/Transition をシークして前のフラグメントを確認してから、ジェスチャーを完了してトランザクションをコミットするか、キャンセルするかを決定できます。
トランジション システム XML リソース 予測型「戻る」をサポート
Animation R.anim いいえ
Animator R.animator ○
フレームワーク Transition R.transition いいえ
Transition 1.4.1 以前の AndroidX Transition R.transition いいえ
Transition 1.5.0 を含む AndroidX Transition R.transition ○

予測型「戻る」ジェスチャーを有効にした後、フラグメントで予測型「戻る」のサポートに関する問題が見つかった場合は、問題を再現するサンプル プロジェクトとともに Fragment に対して問題を報告してください。予測型「戻る」を無効にするには、Activity の onCreate() で FragmentManager.enabledPredictiveBack(false) を使用します。

FragmentManager.OnBackStackChangedListener() で、予測型「戻る」の進行状況イベントとキャンセル イベントをそれぞれ受け取るための onBackStackChangeProgressed() と onBackStackChangeCancelled() が提供されるようになりました。

Fragment Compose アーティファクト

Fragment ベースのアーキテクチャから完全に Compose ベースのアーキテクチャに移行中のアプリのサポートに重点を置いた、新しい fragment-compose アーティファクトが作成されました。

この新しいアーティファクトで利用できる最初の機能は、Fragment の content 拡張メソッドです。このメソッドは、ComposeView を作成して正しい ViewCompositionStrategy を設定することで、個々の Fragment の UI に Compose を簡単に使用できるようにします。

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

バージョン 1.7.0-rc02

2024 年 4 月 17 日

androidx.fragment:fragment-*:1.7.0-rc02 がリリースされました。バージョン 1.7.0-rc02 にはこれらの commit が含まれています。

バグの修正

  • 他のトランジションなしで sharedElement を設定すると実行に失敗する理由を示すログを追加しました。(Iec48e)
  • 他のすべてのトランジションがシーク可能であるトランザクションにシーク不可能な共有要素が追加されるとクラッシュするバグを修正しました。これで、トランザクションは正しくシーク不可と見なされます。(I18ccd)

バージョン 1.7.0-rc01

2024 年 4 月 3 日

androidx.fragment:fragment-*:1.7.0-rc01 がリリースされました。バージョン 1.7.0-rc01 にはこれらの commit が含まれています。

依存関係の更新

バージョン 1.7.0-beta01

2024 年 3 月 20 日

androidx.fragment:fragment-*:1.7.0-beta01 がリリースされました。バージョン 1.7.0-beta01 には、これらの commit が含まれています。

API の変更

  • FragmentHostCallback が Kotlin で記述されるようになり、Host のジェネリック型の null 可能性が onGetHost() の戻り値の型の null 可能性と一致するようになりました。(I40af5)

バグの修正

  • コンテナにないフラグメントで予測型「戻る」ジェスチャーを確定すると、そのフラグメントが破棄されない問題を修正しました。フラグメントはすぐに最終状態に移行します。(Ida0d9)
  • Fragment で、予測型「戻る」ジェスチャーで着信遷移を中断すると、入力ビューが破棄され、画面が空白になる問題を修正しました。(Id3f22、b/319531491)

バージョン 1.7.0-alpha10

2024 年 2 月 7 日

androidx.fragment:fragment-*:1.7.0-alpha10 がリリースされました。バージョン 1.7.0-alpha10 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 以前の Fragment リリースで、Animator または AndroidX Transition の Fragment の予測型「戻る」サポートを使用すると、addOnBackStackChangedListener を介して FragmentManager.OnBackStackChangedListener が追加されていない場合に、フラグメントが handleOnBackProgressed から NullPointerException をスローする既知の問題を修正しました。(I7c835)

バージョン 1.7.0-alpha09

2024 年 1 月 24 日

androidx.fragment:fragment-*:1.7.0-alpha09 がリリースされました。バージョン 1.7.0-alpha09 に含まれる commit については、こちらをご覧ください。

Fragment Compose アーティファクト

Fragment ベースのアーキテクチャから完全に Compose ベースのアーキテクチャに移行中のアプリのサポートに重点を置いた、新しい fragment-compose アーティファクトが作成されました。

この新しいアーティファクトで利用できる最初の機能は、Fragment の content 拡張メソッドです。このメソッドは、ComposeView を作成して正しい ViewCompositionStrategy を設定することで、個々の Fragment の UI に Compose を簡単に使用できるようにします。(561cb7、b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

新機能

  • FragmentManager.OnBackStackChangedListener() で、予測型「戻る」の進行状況イベントとキャンセル イベントをそれぞれ受け取るための onBackStackChangeProgressed() と onBackStackChangeCancelled() が提供されるようになりました。(214b87)

既知の問題

  • Animator または AndroidX Transition で Fragment の予測型「戻る」をサポートする場合、addOnBackStackChangedListener を介して FragmentManager.OnBackStackChangedListener が追加されていないと、Fragment は handleOnBackProgressed から NullPointerException をスローします。リスナーを手動で追加すると、クラッシュを回避できます。この問題の修正は、次の Fragment リリースで利用可能になります。

バージョン 1.7.0-alpha08

2024 年 1 月 10 日

androidx.fragment:fragment-*:1.7.0-alpha08 がリリースされました。バージョン 1.7.0-alpha08 に含まれる commit については、こちらをご覧ください。

クリーンアップ

バージョン 1.7.0-alpha07

2023 年 11 月 29 日

androidx.fragment:fragment-*:1.7.0-alpha07 がリリースされました。バージョン 1.7.0-alpha07 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 共有要素の遷移を設定し、開始/終了遷移も設定できなかったことが原因で発生する NullPointerException を修正しました。(I8472b)
  • Fragment 1.6.2 から: FragmentContainerView の Fragment が拡張されると、FragmentManager、ホスト、ID などの状態が onInflate コールバックでアクセスできるようになりました。(I1e44c、b/307427423)
  • Fragment 1.6.2: clearBackStack を使用してフラグメントのセットを削除する場合、親フラグメントの ViewModels がクリアされると、ネストされたフラグメントの ViewModel もクリアされるようになりました。(I6d83c、b/296173018)

バージョン 1.7.0-alpha06

2023 年 10 月 4 日

androidx.fragment:fragment-*:1.7.0-alpha06 がリリースされました。バージョン 1.7.0-alpha06 に含まれる commit については、こちらをご覧ください。

依存関係の更新

  • フラグメントが、Transition 1.5.0-alpha04 で追加された新しい animateToStart API に依存するように更新されました。

バージョン 1.7.0-alpha05

2023 年 9 月 20 日

androidx.fragment:fragment-*:1.7.0-alpha05 がリリースされました。バージョン 1.7.0-alpha05 に含まれる commit については、こちらをご覧ください。

新機能

  • Androidx Transitions を使用している場合、フラグメントが予測型「戻る」をサポートするようになりました。これにより、カスタムの Androidx Transition を使用して前のフラグメントにシークしてから、完了ジェスチャーでトランザクションをコミットまたはキャンセルするかどうかを決定できます。この機能を有効にするには、移行 1.5.0-alpha03 リリースに依存する必要があります。(Ib49b4、b/285175724)

既知の問題

  • 現在、1 回トランジションで戻るジェスチャーをキャンセルすると、次に戻るジェスチャーを開始したときにトランジションが実行されず、画面が空白になる問題が発生しています。これは、Transition ライブラリの問題が原因である可能性があります。(b/300157785)。この問題が発生した場合は、問題を再現するサンプル プロジェクトとともに Fragment に対して問題を報告してください。予測型「戻る」を無効にするには、Activity の onCreate() で FragmentManager.enabledPredictiveBack(false) を使用します。

バージョン 1.7.0-alpha04

2023 年 9 月 6 日

androidx.fragment:fragment-*:1.7.0-alpha04 がリリースされました。バージョン 1.7.0-alpha04 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 予測型「戻る」ジェスチャーをキャンセルしたときに、フラグメントが正しいライフサイクル状態に移行できない問題を修正しました。(I7cffe、b/297379023)
  • アニメーションがトランジションとともに実行される回帰を修正しました。(I59f36)
  • フラグメントで予測型「戻る」を使用しているときに、バックスタックの最後から 2 番目のフラグメントで連続して 2 回戻ろうとするとクラッシュする問題を修正しました。(Ifa1a4)

バージョン 1.7.0-alpha03

2023 年 8 月 23 日

androidx.fragment:fragment-*:1.7.0-alpha03 がリリースされました。バージョン 1.7.0-alpha03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 予測型「戻る」を使用している場合に、フラグメント マネージャーのバックスタックの最初のフラグメントがスキップされ、3 ボタン ナビゲーションまたは予測型「戻る」ジェスチャーでシステムの「戻る」を使用するとアクティビティが終了する原因となっていた、フラグメントに関する問題を修正しました。(I0664b、b/295231788)

バージョン 1.7.0-alpha02

2023 年 8 月 9 日

androidx.fragment:fragment-*:1.7.0-alpha02 がリリースされました。バージョン 1.7.0-alpha02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • API 34 の予測型「戻る」ジェスチャーでフラグメントを使用している場合、シークをサポートしていない遷移システム(Animations、Transitions)を使用しているか、遷移をまったく使用していない場合、フラグメントはジェスチャーが完了するまで待ってから「戻る」アクションを実行するようになりました。(I8100c)

バージョン 1.7.0-alpha01

2023 年 6 月 7 日

androidx.fragment:fragment-*:1.7.0-alpha01 がリリースされました。このバージョンは内部ブランチで開発されています。

新機能

  • Animator を使用している場合、フラグメントがアプリ内予測型「戻る」をサポートするようになりました。これにより、「戻る」ジェスチャーを使用して、カスタム Animator を使用した前のフラグメントを確認してから、ジェスチャーの完了によってトランザクションを commit するかキャンセルするかを決定できます。試験運用版の enablePredictiveBack() を使用して false を渡すことで、この新しい動作を無効にすることもできます。

バージョン 1.6

バージョン 1.6.2

2023 年 11 月 1 日

androidx.fragment:fragment-*:1.6.2 がリリースされました。バージョン 1.6.2 に含まれる commit については、こちらをご覧ください。

バグの修正

  • FragmentContainerView のフラグメントが拡張されると、FragmentManager、ホスト、ID などの状態が onInflate コールバックでアクセスできるようになりました。(I1e44c、b/307427423)
  • clearBackStack を使用してフラグメントのセットを削除する場合、親フラグメントの ViewModels がクリアされると、ネストされたフラグメントの ViewModel もクリアされるようになりました。(I6d83c、b/296173018)

バージョン 1.6.1

2023 年 7 月 26 日

androidx.fragment:fragment-*:1.6.1 がリリースされました。バージョン 1.6.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • アクティビティが停止されたが破棄されなかったときに保存された状態が、フラグメント インスタンスが RESUMED 状態に戻された後も誤ってキャッシュに保存される問題を修正しました。これにより、複数のバックスタック API を使用してフラグメントを保存して復元する際に、そのフラグメント インスタンスがバックスタックにある場合、キャッシュに保存された状態が再利用されます。(I71288、b/246289075)

依存関係の更新

  • Fragment が Activity 1.7.2 に依存するようになりました。これにより、Kotlin ユーザーが Activity への明示的な依存関係なしに ComponentDialog を拡張できない問題を修正します。(b/287509323)

バージョン 1.6.0

2023 年 6 月 7 日

androidx.fragment:fragment-*:1.6.0 がリリースされました。バージョン 1.6.0 に含まれる commit については、こちらをご覧ください。

1.5.0 以降の重要な変更

  • Fragment の保存済み状態は、プライベート ライブラリの状態(カスタム Parcelable クラス)と、デベロッパーが指定する状態に完全に分割され、常に Bundle に保存されるようになりました。これにより、フラグメントの状態の発生源を正確に特定できます。
  • FragmentManager.OnBackStackChangedListener インターフェースが拡張され、onBackStackChangeStarted と onBackStackChangeCommitted の 2 つの追加のコールバックが追加されました。これらのコールバックは、各 Fragment がフラグメント バックスタックに追加/削除される直前と、トランザクションがコミットされた直後にそれぞれ呼び出されます。
  • FragmentStrictMode で新しい WrongNestedHierarchyViolation が追加されました。これは、子フラグメントが親のビュー階層内にネストされているのに、親の childFragmentManager には追加されていないことを検出するものです。
  • Intent または IntentSender を受け取る Fragment API と FragmentManager API に、null 値を渡したときにこれらのメソッドが呼び出す各 Android フレームワーク API が即座にクラッシュする現象を回避するために、@NonNull でアノテーションが正しく付けられるようになりました。
  • DialogFragment は、requireComponentDialog() API を介して基盤となる ComponentDialog へのアクセスを提供します。
  • Fragment が Lifecycle 2.6.1 に依存するようになりました。
  • Fragment が SavedState 1.2.1 に依存するようになりました。
  • Fragment が ProfileInstaller 1.3.0 に依存するようになりました。
  • fragment-testing-manifest アーティファクトは、マニフェスト エントリを残りのフラグメント テスト コンポーネントから分離します。これにより、以下の処理が可能になります。

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    これにより、fragment-testing と androidx.test の間のバージョン スキューによる競合が回避されます。

バージョン 1.6.0-rc01

2023 年 5 月 10 日

androidx.fragment:fragment-*:1.6.0-rc01 がリリースされました。バージョン 1.6.0-rc01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 複数の startActivityForResult リクエストが連続して行われた場合に、ActivityResult が間違ったリクエスト コードで送信される問題を修正しました。(If0b9d、b/249519359)
  • バックスタックを実際に変更しないトランザクションが、バックスタックを変更するトランザクションと混在している場合に、onBackStackChangeListener コールバックがディスパッチされる問題を修正しました。(I0eb5c、b/279306628)

バージョン 1.6.0-beta01

2023 年 4 月 19 日

androidx.fragment:fragment-*:1.6.0-beta01 がリリースされました。バージョン 1.6.0-beta01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • タイムアウト付きの postponeEnterTransition を使用して、延期されたフラグメントを置き換えても、延期されたフラグメントがリークしなくなりました。(I2ec7d、b/276375110)
  • 新しい onBackStackChangeStarted コールバックと onBackStackChangeCommitted コールバックは、複数のトランザクションに同じフラグメントが含まれている場合でも、フラグメントを 1 回だけディスパッチするようになりました。(Ic6b69)

バージョン 1.6.0-alpha09

2023 年 4 月 5 日

androidx.fragment:fragment-*:1.6.0-alpha09 がリリースされました。バージョン 1.6.0-alpha09 に含まれる commit については、こちらをご覧ください。

API の変更

  • DialogFragment は、requireComponentDialog() API を介して基盤となる ComponentDialog へのアクセスを提供します。(I022e3、b/234274777)
  • フラグメントの commitNow()、executePendingTransactions()、popBackStackImmediate() の各 API に @MainThread のアノテーションが付けられました。つまり、実行時に失敗するのを待つのではなく、メインスレッドから呼び出されない場合はビルドエラーがスローされるようになります。(Ic9665、b/236538905)

バグの修正

  • 同じフレームで保存と復元を行うとクラッシュする可能性がある FragmentManager のバグを修正しました。(Ib36af、b/246519668)
  • OnBackStackChangedListener onBackStackChangeStarted および onBackStackChangeCommitted コールバックは、FragmentManager バックスタックが変更された場合にのみ実行されるようになりました。(I66055、b/274788957)

バージョン 1.6.0-alpha08

2023 年 3 月 22 日

androidx.fragment:fragment-*:1.6.0-alpha08 がリリースされました。バージョン 1.6.0-alpha08 に含まれる commit については、こちらをご覧ください。

動作の変更

  • OnBackStackChangedListener.onBackStackChangeCommited コールバックのタイミングが調整され、フラグメント オペレーションの実行前に実行されるようになりました。これにより、コールバックにデタッチされたフラグメントが渡されることはありません。(I66a76、b/273568280)

バグの修正

  • Fragment 1.5.6: Lifecycle がすでに STARTED で、結果がすでに利用可能な場合、setFragmentResultListener 内で clearFragmentResultListener を呼び出しても機能しない問題を修正しました。(If7458)

依存関係の更新

バージョン 1.6.0-alpha07

2023 年 3 月 8 日

androidx.fragment:fragment-*:1.6.0-alpha07 がリリースされました。バージョン 1.6.0-alpha07 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment 1.5.6 から: メニュー項目を追加したかどうかに関係なく、フラグメントを削除するとアクティビティのメニューが無効になる問題を修正しました。(50f098、b/244336571)

バージョン 1.6.0-alpha06

2023 年 2 月 22 日

androidx.fragment:fragment-*:1.6.0-alpha06 がリリースされました。バージョン 1.6.0-alpha06 に含まれる commit については、こちらをご覧ください。

動作の変更

  • フラグメントがターゲット状態に移行し始める前に、FragmentManager の onBackStackChangedListener で新しい onBackStackChangedStarted コールバックが実行されるようになりました。(I34726)

バージョン 1.6.0-alpha05

2023 年 2 月 8 日

androidx.fragment:fragment-*:1.6.0-alpha05 がリリースされました。バージョン 1.6.0-alpha05 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentManager.OnBackStackChagnedListener インターフェースで onBackStackChangeStarted と onBackStackChangeCommitted の 2 つのコールバックが提供されるようになりました。これにより、FragmentManager でバックスタックの変更が発生するタイミングについて、追加情報と制御が可能になります。(Ib7ce5、b/238686802)

API の変更

  • Intent または IntentSender を受け取る Fragment API と FragmentManager API に、null 値を渡したときにこれらのメソッドが呼び出す各 Android フレームワーク API が即座にクラッシュする現象を回避するために、@NonNull でアノテーションが正しく付けられるようになりました。(I06fd4)

バージョン 1.6.0-alpha04

2022 年 12 月 7 日

androidx.fragment:fragment-*:1.6.0-alpha04 がリリースされました。バージョン 1.6.0-alpha04 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentStrictMode で新しい WrongNestedHierarchyViolation が追加されました。これは、子フラグメントが親のビュー階層内にネストされているのに、親の childFragmentManager には追加されていないことを検出するものです。(I72521、b/249299268)

動作の変更

  • Fragment は、onAttach() の前に SavedStateRegistry 状態を復元し、上位のすべてのライフサイクル メソッドから使用できるようにします。(I1e2b1)

API の変更

  • fragment-testing-manifest アーティファクトは、マニフェスト エントリを残りのフラグメント テスト コンポーネントから分離します。これにより、以下の処理が可能になります。
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

この結果、fragment-testing と androidx.test の間のバージョン スキューによる競合が回避されます。(I8e534、b/128612536)

バグの修正

  • Fragment 1.5.5 以降: Fragment は、ViewModel 状態をビュー レジストリの保存済み状態の一部として誤って保存しなくなりました。(I10d2b、b/253546214)

バージョン 1.6.0-alpha03

2022 年 10 月 5 日

androidx.fragment:fragment:1.6.0-alpha03、androidx.fragment:fragment-ktx:1.6.0-alpha03、androidx.fragment:fragment-testing:1.6.0-alpha03 がリリースされました。バージョン 1.6.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • DialogFragment を拡張するクラスが、onDismiss() のオーバーライドで super を呼び出す必要があります。(I14798、b/238928865)

バグの修正

  • フラグメントが常に適切なコールバックを取得できるように、新しいプロバイダ コールバック インターフェース(OnConfigurationChangedProvider、OnMultiWindowModeChangedProvider、OnTrimMemoryProvider、OnPictureInPictureModeChangedProvider)の統合に起因する回帰を修正しました。(I9b380、I34581、(I8dfe6、b/242570955)、If9d6b、Id0096、I690b3、I2cba2)

バージョン 1.6.0-alpha02

2022 年 8 月 24 日

androidx.fragment:fragment:1.6.0-alpha02、androidx.fragment:fragment-ktx:1.6.0-alpha02、androidx.fragment:fragment-testing:1.6.0-alpha02 がリリースされました。バージョン 1.6.0-alpha02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment 1.5.2 以降: popBackStack() と replace() のトランザクションを同時に実行すると、フラグメントが終了する際に誤った Animation / Animator が実行されることがある問題を修正しました。(Ib1c07、b/214835303)

バージョン 1.6.0-alpha01

2022 年 7 月 27 日

androidx.fragment:fragment:1.6.0-alpha01、androidx.fragment:fragment-ktx:1.6.0-alpha01、androidx.fragment:fragment-testing:1.6.0-alpha01 がリリースされました。バージョン 1.6.0-alpha01 に含まれる commit については、こちらをご覧ください。

動作の変更

  • Fragment の保存済み状態は、プライベート ライブラリの状態(カスタム Parcelable クラス)と、デベロッパーが指定する状態に完全に分割され、常に Bundle に保存されるようになりました。これにより、フラグメントの状態の発生源を正確に特定できます。(b/207158202)

バグの修正

  • Fragment 1.5.1 以降: AGP 7.4 にバンドルされた lint バージョンを使用すると lint がクラッシュする DialogFragmentCallbacksDetector の回帰を修正しました。(b/237567009)

依存関係の更新

バージョン 1.5

バージョン 1.5.7

2023 年 4 月 19 日

androidx.fragment:fragment:1.5.7、androidx.fragment:fragment-ktx:1.5.7、androidx.fragment:fragment-testing:1.5.7 がリリースされました。バージョン 1.5.7 に含まれる commit については、こちらをご覧ください。

バグの修正

  • タイムアウト付きの postponeEnterTransition を使用して、延期されたフラグメントを置き換えても、延期されたフラグメントがリークしなくなりました。(I2ec7d、b/276375110)

バージョン 1.5.6

2023 年 3 月 22 日

androidx.fragment:fragment:1.5.6、androidx.fragment:fragment-ktx:1.5.6、androidx.fragment:fragment-testing:1.5.6 がリリースされました。バージョン 1.5.6 に含まれる commit については、こちらをご覧ください。

バグの修正

  • メニュー項目を追加したかどうかに関係なく、フラグメントを削除するとアクティビティのメニューが無効になる問題を修正しました。(50f098、b/244336571)
  • Lifecycle がすでに STARTED で、結果がすでに利用可能な場合に、setFragmentResultListener 内で clearFragmentResultListener を呼び出すと機能しない問題を修正しました。(If7458)

バージョン 1.5.5

2022 年 12 月 7 日

androidx.fragment:fragment:1.5.5、androidx.fragment:fragment-ktx:1.5.5、androidx.fragment:fragment-testing:1.5.5 がリリースされました。バージョン 1.5.5 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment は、ViewModel 状態をビュー レジストリの保存済み状態の一部として誤って保存しなくなりました。(I10d2b、b/253546214)

バージョン 1.5.4

2022 年 10 月 24 日

androidx.fragment:fragment:1.5.4、androidx.fragment:fragment-ktx:1.5.4、androidx.fragment:fragment-testing:1.5.4 がリリースされました。バージョン 1.5.4 に含まれる commit については、こちらをご覧ください。

バグの修正

  • プロバイダ コールバック インターフェース(OnConfigurationChangedProvider、OnMultiWindowModeChangedProvider、OnTrimMemoryProvider、OnPictureInPictureModeChangedProvider)を実装していないホストでカスタム FragmentController を使用し、子フラグメントにディスパッチできない非推奨のディスパッチ関数を呼び出すエラーを修正しました。(I9b380)

バージョン 1.5.3

2022 年 9 月 21 日

androidx.fragment:fragment:1.5.3、androidx.fragment:fragment-ktx:1.5.3、androidx.fragment:fragment-testing:1.5.3 がリリースされました。バージョン 1.5.3 に含まれる commit については、こちらをご覧ください。

バグの修正

  • バックスタック上のフラグメントが onMultiWindowModeChanged()、onPictureInPictureModeChanged()、onLowMemory()、onConfigurationChanged() のコールバックを取得する原因となっていたエラーを修正しました。(I34581、I8dfe6、b/242570955)
  • ネストされた子フラグメントが onMultiWindowModeChanged()、onPictureInPictureModeChanged()、onLowMemory()、onConfigurationChanged() の複数のコールバックを受け取ることはなくなります。(I690b3、Id0096、If9d6b、I2cba2)

バージョン 1.5.2

2022 年 8 月 10 日

androidx.fragment:fragment:1.5.2、androidx.fragment:fragment-ktx:1.5.2、androidx.fragment:fragment-testing:1.5.2 がリリースされました。バージョン 1.5.2 に含まれる commit については、こちらをご覧ください。

バグの修正

  • popBackStack() と replace() のトランザクションを同時に実行すると、フラグメントが終了する際に誤った Animation/Animator が実行されることがある問題を修正しました。(Ib1c07、b/214835303)

バージョン 1.5.1

2022 年 7 月 27 日

androidx.fragment:fragment:1.5.1、androidx.fragment:fragment-ktx:1.5.1、androidx.fragment:fragment-testing:1.5.1 がリリースされました。バージョン 1.5.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • AGP 7.4 にバンドルされた lint バージョンを使用すると lint がクラッシュする DialogFragmentCallbacksDetector の回帰を修正しました。(b/237567009)

依存関係の更新

バージョン 1.5.0

2022 年 6 月 29 日

androidx.fragment:fragment:1.5.0、androidx.fragment:fragment-ktx:1.5.0、androidx.fragment:fragment-testing:1.5.0 がリリースされました。バージョン 1.5.0 に含まれる commit については、こちらをご覧ください。

1.4.0 以降の重要な変更

  • CreationExtras の統合 - Fragment が Lifecycle 2.5.0 の CreationExtras を介して、ステートレスの ViewModelProvider.Factory を提供できるようになりました。
  • Component Dialog の統合 - DialogFragment が Activity 1.5.0 を介して、onCreateDialog() によって返されるデフォルトのダイアログとして ComponentDialog を使用するようになりました。
  • 保存済みインスタンスの状態のリファクタリング - フラグメントでインスタンスの状態を保存する方法を順次変更しています。これは、フラグメントに保存されている状態と状態のソースを明確に識別するための取り組みです。現在の変更点は以下のとおりです。
    • FragmentManager で、保存済みインスタンスの状態をカスタム Parcelable に直接ではなく、Bundle に保存できるようになりました。
    • まだ配信されていない Fragment Result APIs を介して設定された結果が、FragmentManager の内部状態とは別に保存されるようになりました。
    • 個々のフラグメントに関連付けられた状態は、FragmentManager の内部状態とは別に保存されるようになりました。これにより、個々のフラグメントに関連付けられた保存済みの状態の量を Fragment のデバッグ ロギングに存在する一意の ID に関連付けることができます。

その他の変更点

  • FragmentStrictMode で、クラス名とともに allowViolation() を使用することで非公開のサードパーティ フラグメントが特定の違反ペナルティを回避できるようになりました。
  • アクティビティの ActionBar にメニューを提供する Fragment API は非推奨になりました。Activity 1.4.0 に追加された MenuHost API と MenuProvider API は、フラグメントが使用できるように、テスト可能で、ライフサイクルに対応可能な同等の API サーフェスを提供します。

バージョン 1.5.0-rc01

2022 年 5 月 11 日

androidx.fragment:fragment:1.5.0-rc01、androidx.fragment:fragment-ktx:1.5.0-rc01、androidx.fragment:fragment-testing:1.5.0-rc01 がリリースされました。バージョン 1.5.0-rc01 に含まれる commit については、こちらをご覧ください。

保存済みインスタンスの状態のリファクタリング

  • 個々のフラグメントに関連付けられた状態は、FragmentManager の内部状態とは別に保存されるようになりました。これにより、個々のフラグメントに関連付けられた保存済みの状態の量をフラグメントのデバッグ ロギングに存在する一意の ID に関連付けることができます。(a153e0、b/207158202)

バージョン 1.5.0-beta01

2022 年 4 月 20 日

androidx.fragment:fragment:1.5.0-beta01、androidx.fragment:fragment-ktx:1.5.0-beta01、androidx.fragment:fragment-testing:1.5.0-beta01 がリリースされました。バージョン 1.5.0-beta01 に含まれる commit については、こちらをご覧ください。

API の変更

  • DialogFragment に、showNow 関数と同等の commitNow を使用する新しい dismissNow メソッドが追加されました。これにより、Dialog がすぐに閉じられることはありません。FragmentManager の状態が同期的に更新されるだけです。(I15c36、b/72644830)

保存済みインスタンスの状態のリファクタリング

  • FragmentManager で、保存済みインスタンスの状態をカスタム Parcelable に直接ではなく、Bundle に保存できるようになりました。これは、フラグメントによって実際に保存される内容について透明性を高めるための第一歩です。(I93807、b/207158202)
  • まだ配信されていない Fragment Result API を介して設定された結果が、FragmentManager の内部状態とは別に保存されるようになりました。これにより、保存済みインスタンスの状態の一部として保存される結果について、透明性を高めることができます。(I6ea12、b/207158202)

バージョン 1.5.0-alpha05

2022 年 4 月 6 日

androidx.fragment:fragment:1.5.0-alpha05、androidx.fragment:fragment-ktx:1.5.0-alpha05、androidx.fragment:fragment-testing:1.5.0-alpha05 がリリースされました。バージョン 1.5.0-alpha05 に含まれる commit については、こちらをご覧ください。

API の変更

バージョン 1.5.0-alpha04

2022 年 3 月 23 日

androidx.fragment:fragment:1.5.0-alpha04、androidx.fragment:fragment-ktx:1.5.0-alpha04、androidx.fragment:fragment-testing:1.5.0-alpha04 がリリースされました。バージョン 1.5.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • フラグメントをアクティビティに密結合して単独でテストできなくなるため、アクティビティの ActionBar にメニューを提供するフラグメント API は非推奨になりました。Activity 1.4.0-alpha01 に追加された MenuHost API と MenuProvider API は、フラグメントが使用できるように、テスト可能で、ライフサイクルに対応可能な同等の API サーフェスを提供します。(I50a59、I20758)

バグの修正

  • SavedStateViewFactory が、SavedStateRegistryOwner で初期化された場合でも CreationExtras を使用できるようになりました。エクストラが指定されている場合、初期化された引数は無視されます。(I6c43b、b/224844583)

バージョン 1.5.0-alpha03

2022 年 2 月 23 日

androidx.fragment:fragment:1.5.0-alpha03、androidx.fragment:fragment-ktx:1.5.0-alpha03、androidx.fragment:fragment-testing:1.5.0-alpha03 がリリースされました。バージョン 1.5.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • CreationExtras を by viewModels() 関数と by activityViewModels() 関数に渡せるようになりました。(Ibefe7、b/217601110)

動作の変更

  • DialogFragment が、onCreateDialog() によって返されるデフォルトのダイアログとして ComponentDialog を使用するようになりました。(If3784、b/217618170)

バージョン 1.5.0-alpha02

2022 年 2 月 9 日

androidx.fragment:fragment:1.5.0-alpha02、androidx.fragment:fragment-ktx:1.5.0-alpha02、androidx.fragment:fragment-testing:1.5.0-alpha02 がリリースされました。バージョン 1.5.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentStrictMode で、クラス名とともに allowViolation() を使用することで非公開のサードパーティ フラグメントが特定の違反ペナルティを回避できるようになりました。(I8f678)

バージョン 1.5.0-alpha01

2022 年 1 月 26 日

androidx.fragment:fragment:1.5.0-alpha01、androidx.fragment:fragment-ktx:1.5.0-alpha01、androidx.fragment:fragment-testing:1.5.0-alpha01 がリリースされました。バージョン 1.5.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

バグの修正

  • Fragment 1.4.1 以降: XML から生成されたビュー ID の値が負の場合に、FragmentContainerView が不正状態の例外をスローしなくなりました。(Ic185b、b/213086140)
  • Fragment 1.4.1 以降: by viewModels() 遅延関数でカスタム ownerProducer ラムダを使用する場合、常にフラグメントの Factory が使用されるのではなく、カスタム ViewModelProvider.Factory が提供されていなければ、そのオーナーの defaultViewModelProviderFactory が使用されるようになりました。(I56170、b/214106513)
  • Fragment の registerForActivityResult() コールバックから ViewModel に初めてアクセスする際のクラッシュを修正しました。(Iea2b3)

バージョン 1.4

バージョン 1.4.1

2022 年 1 月 26 日

androidx.fragment:fragment:1.4.1、androidx.fragment:fragment-ktx:1.4.1、androidx.fragment:fragment-testing:1.4.1 がリリースされました。バージョン 1.4.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • XML から生成されたビュー ID の値が負の場合に、FragmentContainerView が不正状態の例外をスローしなくなりました。(Ic185b、b/213086140)
  • by viewModels() 遅延関数でカスタム ownerProducer ラムダを使用する場合、常にフラグメントの Factory が使用されるのではなく、カスタム ViewModelProvider.Factory が提供されていなければ、そのオーナーの defaultViewModelProviderFactory が使用されるようになりました。(I56170、b/214106513)

バージョン 1.4.0

2021 年 11 月 17 日

androidx.fragment:fragment:1.4.0、androidx.fragment:fragment-ktx:1.4.0、androidx.fragment:fragment-testing:1.4.0 がリリースされました。バージョン 1.4.0 に含まれる commit については、こちらをご覧ください。

1.3.0 以降の重要な変更

  • FragmentStrictMode API は、依存しているアプリまたはライブラリが非推奨のフラグメント API を呼び出していないことを確認できるランタイム チェック機能を提供します。違反が検出されたときは、ログメッセージを出力するか、独自のカスタム リスナーをトリガーするか、アプリをクラッシュさせるかを選択できます。どのチェックを有効にするか、およびどの「ペナルティ」をトリガーするかを制御する FragmentStrictMode.Policy は、FragmentManager で新しい setStrictModePolicy() メソッドにより設定できます。このポリシーはその FragmentManager に適用され、独自のポリシーを設定していないすべての子フラグメント マネージャーにも推移的に適用されます。フラグメントの StrictMode をご覧ください。
  • FragmentContainerView は、コンテナに最後に追加されたフラグメントを返す getFragment() メソッドを提供するようになりました。このメソッドは findFragmentById() と同じロジックで FragmentContainerView の ID を使用しますが、呼び出しを連鎖させることができます。

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario が Closeable を実装し、Kotlin の use メソッドまたは try-with-resources で使用できるようになりました。

  • フラグメント遷移でテーマから取得された標準のアクティビティ遷移アニメーションを有効にするかどうかを指定する FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} を追加しました。

  • FragmentManager.enableNewStateManager(boolean) の試験運用版 API が削除され、新しい状態マネージャーのみが使用可能になりました。

複数のバックスタック

FragmentManager は、addToBackStack() を使用したフラグメント トランザクションで構成されるバックスタックを保持します。これにより、フラグメントで状態を保存するメカニズムを使用して、それらのトランザクションをポップして前の状態に戻すことができ、フラグメントが自身の状態を適切に復元できるようになります。

このリリースでは、3 つの新しい FragmentManager API(saveBackStack(String name)、restoreBackStack(String name)、clearBackStack(String name))によって、このメカニズムを拡張しています。これらの API は、addToBackStack() と同じ name を使用して、FragmentTransaction の状態と、そのトランザクション内で追加されたすべてのフラグメントの状態を保存し、後でそれらのトランザクションと、状態を保持しているそれらのフラグメントを復元できるようにします。これにより、現在のバックスタックを保存し、保存されたバックスタックを復元して、複数のバックスタックを効率的に切り替えられます。

saveBackStack() は popBackStack() と同様に動作します。つまり、非同期であり、結果的にすべてのフラグメント トランザクションはその特定の名前に戻され(ポップされ)、追加されたフラグメントはすべて破棄されて削除されます。ただし、次に示す重要な違いがあります。

  • saveBackStack() は常に包括的です。
  • 指定された名前がバックスタックに見つからない場合または null の名前が指定されている場合、popBackStack() はバックスタックのすべてのトランザクションをポップしますが、saveBackStack() は、その null でない正確な名前で addToBackStack() を使用してフラグメント トランザクションを以前に commit したことがなければ、何もしません。
  • トランザクションから追加されたすべてのフラグメントの状態が保存されます。つまり、すべてのフラグメントの View 状態が保存され、すべてのフラグメントの onSaveInstanceState() が呼び出されてその状態が復元され、それらのフラグメントに関連付けられたすべての ViewModel インスタンスが保持されます(それらにおいて onCleared() は呼び出されません)。

saveBackStack() で使用可能なフラグメント トランザクションは、次に示す特定の条件を満たす必要があります。

  • すべてのフラグメント トランザクションは、トランザクションを単一のアトミック オペレーションとして復元できるように、setReorderingAllowed(true) を使用する必要があります。
  • 保存されたトランザクションのセットは、保存中のバックスタックにどのような変更が加えられた場合でも後で確実に復元できるように、自己完結型でなければなりません(つまり、トランザクションのセットの外部にあるフラグメントを明示的に参照してはなりません)。
  • バックスタックが保存された後で、保存されているフラグメントへの参照を FragmentManager が返さないようにするため、保存されているフラグメントを保持対象のフラグメントにしたり、子フラグメントの遷移セットに保持対象のフラグメントを含めたりすることはできません。

saveBackStack()、restoreBackStack()、clearBackStack() と同様に、それぞれ以前に保存されたバックスタックを復元したり、以前に保存されたバックスタックをクリアしたりしますが、どちらも以前に同じ名前で saveBackStack() を呼び出していなければ、何もしません。

詳細については、複数のバックスタック: 詳細をご覧ください。

バージョン 1.4.0-rc01

2021 年 11 月 3 日

androidx.fragment:fragment:1.4.0-rc01 がリリースされました。Fragment 1.4.0-beta01 からの変更はありません。バージョン 1.4.0-rc01 に含まれる commit については、こちらをご覧ください。

バージョン 1.4.0-beta01

2021 年 10 月 27 日

androidx.fragment:fragment:1.4.0-beta01、androidx.fragment:fragment-ktx:1.4.0-beta01、androidx.fragment:fragment-testing:1.4.0-beta01 がリリースされました。バージョン 1.4.0-beta01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 親フラグメントは、独自のコールバックを起動する前に、階層全体で onHiddenChanged() をディスパッチするようになりました。(Iedc20、b/77504618)
  • 開いたキーボードがあるフラグメントからリサイクラー ビューのあるフラグメントに移動すると、キーボードが自動的に閉じるようになりました。(I8b842、b/196852211)
  • DialogFragment は、show()、showNow()、または dismiss() を呼び出すときに作成するすべてのトランザクションに対して setReorderingAllowed(true) を使用するようになりました。(Ie2c14)
  • DetachAndAttachFragmentInSameFragmentTransaction という非常に長い lint 警告は DetachAndAttachSameFragment に短縮されました。(e9eca3)

バージョン 1.4.0-alpha10

2021 年 9 月 29 日

androidx.fragment:fragment:1.4.0-alpha10、androidx.fragment:fragment-ktx:1.4.0-alpha10、androidx.fragment:fragment-testing:1.4.0-alpha10 がリリースされました。バージョン 1.4.0-alpha10 に含まれる commit については、こちらをご覧ください。

lint

  • DetachAndAttachFragmentInSameFragmentTransaction lint 警告を追加して、同じ FragmentTransaction 内で同じ Fragment の detach() と attach() の両方の呼び出しを検出するようにしました。これらの相補的な動作は、同じトランザクションで実行されると相互にキャンセルされるため、実際にアクションを実行するには、それぞれを別のトランザクションに分割する必要があります。(aosp/1832956、b/200867930)
  • FragmentAddMenuProvider lint エラーを追加して、MenuHost の addMenuProvider API を使用する際に、フラグメントの Lifecycle を使用せずにフラグメント ビューの Lifecycle を使用するように修正しました。(aosp/1830457、b/200326272)

ドキュメントの更新情報

  • Activity Result API で処理されるようになった API のサポート終了メッセージ(startActivityForResult、startIntentSenderForResult、onActivityResult、requestPermissions、onRequestPermissionsResult)が、すべて詳細に表示されるようになりました。(cce80f)
  • onActivityCreated() のサポート終了メッセージ(Fragment と DialogFragment の両方)が詳細に表示されるようになりました。(224db4)

バージョン 1.4.0-alpha09

2021 年 9 月 15 日

androidx.fragment:fragment:1.4.0-alpha09、androidx.fragment:fragment-ktx:1.4.0-alpha09、androidx.fragment:fragment-testing:1.4.0-alpha09 がリリースされました。バージョン 1.4.0-alpha09 に含まれる commit については、こちらをご覧ください。

新機能

  • clearBackStack(name) を呼び出して、saveBackStack(name) で以前に保存された状態を消去できるようになりました。(I70cd7)

API の変更

  • Kotlin で FragmentContainerView クラスが書き換えられ、getFragment 関数が null 可能性を適切に考慮するようになりました。(If694a、b/189629145)
  • FragmentStrictMode が Kotlin で記述されるようになりました。(I11767、b/199183506)

バグの修正

  • setReorderingAllowed(true) で追加され、保留中のトランザクションを実行する前にすぐに削除される Fragment の状態が適切にクリーンアップされない問題を修正しました。(I8ccb8)

バージョン 1.4.0-alpha08

2021 年 9 月 1 日

androidx.fragment:fragment:1.4.0-alpha08、androidx.fragment:fragment-ktx:1.4.0-alpha08、androidx.fragment:fragment-testing:1.4.0-alpha08 がリリースされました。バージョン 1.4.0-alpha08 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 冗長なかっこをより適切に処理するように UseRequireInsteadOfGet lint チェックを改善しました。(I2d865)
  • 追加のエッジケースを処理するように UseGetLayoutInflater lint チェックを改善しました。(Ie5423)

バージョン 1.4.0-alpha07

2021 年 8 月 18 日

androidx.fragment:fragment:1.4.0-alpha07、androidx.fragment:fragment-ktx:1.4.0-alpha07、androidx.fragment:fragment-testing:1.4.0-alpha07 がリリースされました。特筆すべき変更はありません。バージョン 1.4.0-alpha07 に含まれる commit については、こちらをご覧ください。

バージョン 1.4.0-alpha06

2021 年 8 月 4 日

androidx.fragment:fragment:1.4.0-alpha06、androidx.fragment:fragment-ktx:1.4.0-alpha06、androidx.fragment:fragment-testing:1.4.0-alpha06 がリリースされました。バージョン 1.4.0-alpha06 に含まれる commit については、こちらをご覧ください。

バグの修正

  • FragmentTransaction の復元中に IllegalStateException として表示される、または表示されるフラグメントの 2 番目のコピーとして表示されるバックスタックをすばやく切り替える際の、複数のバックスタックに関する問題を修正しました。(I9039f)
  • FragmentManager が、状態が復元された後でも、以前に saveBackStack() を介して保存された状態のコピーを保持する問題を修正しました。(Ied212)
  • show(FragmentTransaction, String) メソッドで DialogFragment が明示的に追加され、状態が保存された後に DialogFragment の dismissAllowingStateLoss() メソッドを呼び出しても、クラッシュしなくなりました。(I84422)

バージョン 1.4.0-alpha05

2021 年 7 月 21 日

androidx.fragment:fragment:1.4.0-alpha05、androidx.fragment:fragment-ktx:1.4.0-alpha05、androidx.fragment:fragment-testing:1.4.0-alpha05 がリリースされました。バージョン 1.4.0-alpha05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment 1.3.6: ルートビューに transitionGroup=”true” が設定されている場合、hide() の使用時に Fragment のビューが GONE に正しく設定されるようになりました。(aosp/1766655、b/193603427)
  • Fragment 1.3.6: FragmentActivity は、オーバーライドするライフサイクル コールバックでの最初のオペレーションとして、保存済み状態を常にロック解除するようになりました。(I6db7a)

依存関係の更新

バージョン 1.4.0-alpha04

2021 年 6 月 30 日

androidx.fragment:fragment:1.4.0-alpha04、androidx.fragment:fragment-ktx:1.4.0-alpha04、androidx.fragment:fragment-testing:1.4.0-alpha04 がリリースされました。バージョン 1.4.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • FragmentManager は、内部で SavedStateRegistry を使用して状態を保存するようになりました。FragmentController の saveAllState() メソッドと restoreSavedState() メソッドのサポートも終了しました。FragmentController を使用して FragmentActivity の外部でフラグメントをホストする場合は、FragmentHostCallbacks に SavedStateRegistryOwner を実装する必要があります。(Iba68e、b/188734238)

バグの修正

  • 複数のバックスタックのサポートの一環としての saveBackStack() の呼び出しが、replace() を使用する FragmentTransaction の実行と同時に行われた際に失敗する問題を修正しました。(I73137)
  • 複数のバックスタックのサポートで restoreBackStack() API を使用する際に、複数のトランザクションを含む保存されたバックスタックを手動で復元した後に発生する NullPointerException を修正しました。これにより、setReorderingAllowed(true) が一部のトランザクションについてチェックされない問題も修正されました。(I8c593)
  • 以前に保存されたフラグメントが FragmentManager から削除された後も、それらのフラグメントの状態を FragmentManager が引き続き誤って復元し、保存された状態が時間の経過とともに継続的に拡大する問題を修正しました。(I1fb8e)

バージョン 1.4.0-alpha03

2021 年 6 月 16 日

androidx.fragment:fragment:1.4.0-alpha03、androidx.fragment:fragment-ktx:1.4.0-alpha03、androidx.fragment:fragment-testing:1.4.0-alpha03 がリリースされました。バージョン 1.4.0-alpha03 に含まれる commit については、こちらをご覧ください。

新機能

  • Fragment の StrictMode Violation クラスをすべて更新し、違反の詳細を説明する詳細なエラー メッセージを追加しました。(b/187871638)
    • FragmentTagUsageViolation に、フラグメントが追加されている親コンテナを含む詳細なエラー メッセージが追加されました。(Ic33a7)
    • WrongFragmentContainerViolation に、フラグメントが追加されていたコンテナを含む詳細なエラー メッセージが追加されました。(Ib55f8)
    • TargetFragmentUsageViolation のユースケース クラスに詳細なエラー メッセージが追加され、違反を引き起こしているフラグメントとその他の関連情報が含まれるようになりました。(Icc6ac)
    • RetainInstanceUsageViolation を拡張するクラスに、違反を引き起こしているフラグメントを含む詳細なエラー メッセージが追加されました。(I6bd55)
    • FragmentReuseViolation に、フラグメントの前の ID を含む詳細なエラー メッセージが追加されました。(I28ce2)
    • SetUserVisibleHintViolation に、ユーザーに表示されるヒントが設定されていた先を含む詳細なエラー メッセージが追加されました。(Ib2d5f)

動作の変更

  • FragmentContainerView での fitsSystemWindows の呼び出しの制限を元に戻しました。これによりアプリがクラッシュすることはなくなりました。(6b8ddd、b/190622202)

バグの修正

  • Fragment 1.3.5: aosp/1679887 によって Fragment 1.3.4 に導入された共有要素の遷移での回帰を修正しました。Fragment が遷移グループを正しく処理するようになり(transitionGroup="true" で直接設定するか、transitionName または background で間接的に設定するかのいずれか)、共有要素が IndexOutOfBoundsException をスローすることはなくなりました。(I16484、b/188679569、b/188969304)
  • 削除フラグメントを非表示にしようとしたときに FragmentManager がクラッシュすることはなくなりました。(I573dd、b/183634730)
  • 最上位変数を評価したときに OnCreateDialogIncorrectCallback lint チェックがクラッシュすることはなくなりました。(0a9efa、b/189967522)

バージョン 1.4.0-alpha02

2021 年 6 月 2 日

androidx.fragment:fragment:1.4.0-alpha02、androidx.fragment:fragment-ktx:1.4.0-alpha02、androidx.fragment:fragment-testing:1.4.0-alpha02 がリリースされました。バージョン 1.4.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentManager を介してロギングが有効になっている場合、現在使用されている厳格モードのポリシーに関係なく、FragmentStrictMode が常に違反をログに記録するようになりました。(I02df6、b/187872638)
  • FragmentStrictMode が、特定の Fragment クラスを厳格モードの Violation から除外できるようになりました。これにより、このクラスがペナルティを迂回できるようになります。(Ib4e5d、b/184786736)

  • FragmentStrictMode Violation クラスが拡張され、各違反に基づいて構造情報が追加されるようになりました。これにより、違反の原因と違反したフラグメントを正確に確認できます(If5118、b/187871150)。各 Violation には次のものが含まれます。

    • WrongFragmentContainerViolation に、Fragment の追加が試みられた ViewGroup が含まれるようになりました。(I83c75、b/187871150)
    • TargetFragmentUsageViolation が SetTargetFragmentUsageViolation、GetTargetFragmentUsageViolation、GetTargetFragmentRequestCodeUsageViolation に拡張され、SetTargetFragmentUsageViolation にターゲット フラグメントとリクエスト コードが含まれるようになりました。(I741b4、b/187871150)
    • SetUserVisibleHintViolation に、setUserVisibleHint() に渡されたブール値が含まれるようになりました。(I00585、b/187871150)
    • FragmentTagUsageViolation に、<fragment> タグがフラグメントをインフレートしようとした ViewGroup が含まれるようになりました。(I5dbbc、b/187871150)
    • FragmentReuseViolation に、違反の原因となった Fragment の前のインスタンスの一意の ID が含まれるようになりました。(I0544d、b/187871150)
    • RetainInstanceUsageViolation は抽象クラスとなり、2 つのサブクラス(SetRetainInstanceUsageViolation と GetRetainInstanceUsageViolation)を持つようになりました。これらのサブクラスは、違反の種類に応じて 2 つのケースを表します。(Ic81e5、b/187871150)

動作の変更

  • プログラムまたは XML で fitsSystemWindow 属性を変更しようとすると、FragmentContainerView が例外をスローするようになりました。インセットは個々のフラグメントのビューによって処理されます。(Ie6651、b/187304502)

バージョン 1.4.0-alpha01

2021 年 5 月 18 日

androidx.fragment:fragment:1.4.0-alpha01、androidx.fragment:fragment-ktx:1.4.0-alpha01、androidx.fragment:fragment-testing:1.4.0-alpha01 がリリースされました。バージョン 1.4.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentContainerView は、コンテナに最後に追加されたフラグメントを返す getFragment() メソッドを提供するようになりました。このメソッドは findFragmentById() と同じロジックで FragmentContainerView の ID を使用しますが、呼び出しを連鎖させることができます。(Ife17a、b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • フラグメント遷移でテーマから取得された標準のアクティビティ遷移アニメーションを有効にするかどうかを指定する FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} を追加しました。(I46652)

複数のバックスタック

FragmentManager は、addToBackStack() を使用したフラグメント トランザクションで構成されるバックスタックを保持します。これにより、フラグメントで状態を保存するメカニズムを使用して、それらのトランザクションをポップして前の状態に戻すことができ、フラグメントが自身の状態を適切に復元できるようになります。

このリリースでは、2 つの新しい FragmentManager API(saveBackStack(String name) と restoreBackStack(String name))によって、このメカニズムを拡張しています。これらの API は、addToBackStack() と同じ name を使用して、FragmentTransaction の状態と、そのトランザクション内で追加されたすべてのフラグメントの状態を保存し、後でそれらのトランザクションと、状態を保持しているそれらのフラグメントを復元できるようにします。これにより、現在のバックスタックを保存し、保存されたバックスタックを復元して、複数のバックスタックを効率的に切り替えられます。

saveBackStack() は popBackStack() と同様に動作します。つまり、非同期であり、結果的にすべてのフラグメント トランザクションはその特定の名前に戻され(ポップされ)、追加されたフラグメントはすべて破棄されて削除されます。ただし、次に示す重要な違いがあります。

  • saveBackStack() は常に包括的です。
  • 指定された名前がバックスタックに見つからない場合または null の名前が指定されている場合、popBackStack() はバックスタックのすべてのトランザクションをポップしますが、saveBackStack() は、その null でない正確な名前で addToBackStack() を使用してフラグメント トランザクションを以前に commit したことがなければ、何もしません。
  • トランザクションから追加されたすべてのフラグメントの状態が保存されます。つまり、すべてのフラグメントの View 状態が保存され、すべてのフラグメントの onSaveInstanceState() が呼び出されてその状態が復元され、それらのフラグメントに関連付けられたすべての ViewModel インスタンスが保持されます(それらにおいて onCleared() は呼び出されません)。

saveBackStack() で使用可能なフラグメント トランザクションは、次に示す特定の条件を満たす必要があります。

  • すべてのフラグメント トランザクションは、トランザクションを単一のアトミック オペレーションとして復元できるように、setReorderingAllowed(true) を使用する必要があります。
  • 保存されたトランザクションのセットは、保存中のバックスタックにどのような変更が加えられた場合でも後で確実に復元できるように、自己完結型でなければなりません(つまり、トランザクションのセットの外部にあるフラグメントを明示的に参照してはなりません)。
  • バックスタックが保存された後で、保存されているフラグメントへの参照を FragmentManager が返さないようにするため、保存されているフラグメントを保持対象のフラグメントにしたり、子フラグメントの遷移セットに保持対象のフラグメントを含めたりすることはできません。

restoreBackStack() は、saveBackStack() と同様に、以前 saveBackStack() を同じ名前で呼び出していなければ、何もしません。(b/80029773)

FragmentStrictMode

FragmentStrictMode API は、依存しているアプリまたはライブラリが非推奨のフラグメント API を呼び出していないことを確認できるランタイム チェック機能を提供します。違反が検出されたときは、ログメッセージを出力するか、独自のカスタム リスナーをトリガーするか、アプリをクラッシュさせるかを選択できます。どのチェックを有効にするか、およびどの「ペナルティ」をトリガーするかを制御する FragmentStrictMode.Policy は、FragmentManager で新しい setStrictModePolicy() メソッドにより設定できます。このポリシーはその FragmentManager に適用され、独自のポリシーを設定していないすべての子フラグメント マネージャーにも推移的に適用されます。(#123、#131、#150、b/143774122)

  • detectFragmentReuse() は、以前に削除された Fragment インスタンスが FragmentManager に再度追加されているかどうかを検出します。Fragment インスタンスが破棄されて FragmentManager から削除された後で、そのインスタンスへの参照を操作または保持してはなりません。(#142、b/153738653)
  • detectFragmentTagUsage() は、レイアウト XML 内での <fragment> タグの使用を検出します。レイアウトの一部としてフラグメントをインフレートする場合は、常に FragmentContainerView を使用する必要があります。(#141、b/153738235)
  • detectWrongFragmentContainer() は、FragmentContainerView ではないコンテナへのフラグメントの追加を検出します。レイアウト内のフラグメントのコンテナとして、常に FragmentContainerView を使用する必要があります。(#146、b/181137036)
  • detectRetainInstanceUsage() は、非推奨の setRetainInstance() API または getRetainInstance() API の使用を検出します。(#140、b/153737954)
  • detectSetUserVisibleHint() は、非推奨の setUserVisibleHint() API の使用を検出します。(#136、b/153738974)
  • detectTargetFragmentUsage() は、非推奨の setTargetFragment() API、getTargetFragment() API、getTargetRequestCode() API の使用を検出します。(#139、b/153737745)

API の変更

新しい lint チェック

  • DialogFragment 内で LayoutInflater.from(Context) を使用すると、UseGetLayoutInflater lint チェックで警告が表示されるようになりました。LayoutInflater を適切に取得するには、常にダイアログ フラグメントの getLayoutInflater() メソッドを使用する必要があります。(#156、b/170781346)
  • DialogFragment の onCreateDialog() メソッドで setOnCancelListener または setOnDismissListener を呼び出すと、DialogFragmentCallbacksDetector lint チェックで警告が表示されるようになりました。これらのリスナーは DialogFragment 自体によって所有されており、これらのコールバックを受信するには onCancel() と onDismiss() をオーバーライドする必要があります。(#171、b/181780047、b/187524311)

バグの修正

  • Fragment 1.3.4 以降: Fragment 内で ViewModelProvider または viewModel() の Jetpack Compose メソッドとともに ViewTreeViewModelStoreOwner.get() API を使用した場合に Fragment 1.3.3 で発生する回帰を修正しました。このようなユースケースで、getDefaultViewModelProviderFactory() をオーバーライドした場合に Fragment によって提供される ViewModelProvider.Factory を正しく使用できるようになりました(この動作は、Hilt を使用する際の @AndroidEntryPoint アノテーションが付けられた Fragment と同様です)。このメソッドをオーバーライドしない場合、Fragment のビューとともに状態を保存および復元する SavedStateViewModelFactory がデフォルトのファクトリとして作成されます。(I5cbfa、b/186097368)
  • Fragment 1.3.4 以降: API 29 で FragmentContainerView を使用した場合に、インセットが無期限にディスパッチされることがなくなります。これにより、BottomNavigationBar および FloatingActionButton インスタンスに関する問題が解決されます。(I1bb78、b/186012452)
  • Fragment 1.3.4 以降: プロセスの異常終了後に、フラグメントの結果バンドルから Parcelable を取得できるようになりました。(I65932、b/187443158)
  • Fragment 1.3.4 以降: ViewGroup で共有要素の遷移を行うときに、ViewGroup で transitionGroup が false に設定されていれば、適切に遷移するようになりました。(I99675)

外部からの協力

バージョン 1.3

バージョン 1.3.6

2021 年 7 月 21 日

androidx.fragment:fragment:1.3.6、androidx.fragment:fragment-ktx:1.3.6、androidx.fragment:fragment-testing:1.3.6 がリリースされました。バージョン 1.3.6 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment 1.4.0-alpha03: 削除フラグメントを非表示にしようとしたときに FragmentManager がクラッシュすることはなくなりました。(I573dd、b/183634730)
  • ルートビューで transitionGroup=”true” が設定されている場合、hide() の使用時に Fragment のビューが GONE に正しく設定されるようになりました。(aosp/1766655、b/193603427)
  • FragmentActivity は、オーバーライドするライフサイクル コールバックでの最初のオペレーションとして、保存済み状態を常にロック解除するようになりました。(I6db7a)

依存関係の更新

バージョン 1.3.5

2021 年 6 月 16 日

androidx.fragment:fragment:1.3.5、androidx.fragment:fragment-ktx:1.3.5、androidx.fragment:fragment-testing:1.3.5 がリリースされました。バージョン 1.3.5 に含まれる commit については、こちらをご覧ください。

バグの修正

  • aosp/1679887 によって Fragment 1.3.4 に導入された共有要素の遷移での回帰を修正しました。Fragment が遷移グループを正しく処理するようになり(transitionGroup="true" で直接設定するか、transitionName または background で間接的に設定するかのいずれか)、共有要素が IndexOutOfBoundsException をスローすることはなくなりました。(I16484、b/188679569、b/188969304)

バージョン 1.3.4

2021 年 5 月 18 日

androidx.fragment:fragment:1.3.4、androidx.fragment:fragment-ktx:1.3.4、androidx.fragment:fragment-testing:1.3.4 がリリースされました。バージョン 1.3.4 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Hilt を使用する際に Fragment 内で ViewModelProvider または viewModel() の Jetpack Compose メソッドとともに ViewTreeViewModelStoreOwner.get() API を使用した場合に Fragment 1.3.3 で発生する回帰を修正しました。このようなユースケースで、getDefaultViewModelProviderFactory() をオーバーライドした場合に Fragment によって提供される ViewModelProvider.Factory を正しく使用できるようになりました(この動作は、@AndroidEntryPoint アノテーションが付けられた Fragment と同様です)。このメソッドをオーバーライドしない場合、Fragment のビューとともに状態を保存および復元する SavedStateViewModelFactory がデフォルトのファクトリとして作成されます。(I5cbfa、b/186097368)
  • API 29 で FragmentContainerView を使用した場合に、インセットが無期限にディスパッチされることがなくなります。これにより、BottomNavigationBar および FloatingActionButton インスタンスに関する問題が解決されます。(I1bb78、b/186012452)
  • プロセスの異常終了後に、フラグメントの結果バンドルから Parcelable を取得できるようになりました。(I65932、b/187443158)
  • ViewGroup で共有要素の遷移を行うときに、ViewGroup で transitionGroup が false に設定されていれば、適切に遷移するようになりました。(I99675)

バージョン 1.3.3

2021 年 4 月 21 日

androidx.fragment:fragment:1.3.3、androidx.fragment:fragment-ktx:1.3.3、androidx.fragment:fragment-testing:1.3.3 がリリースされました。バージョン 1.3.3 に含まれる commit については、こちらをご覧ください。

新機能

  • SavedStateViewModelFactory を、Fragment のビューで ViewTreeSavedStateRegistryOwner.get() を使用して返された SavedStateRegistryOwner とともに使用できるようになりました。(I21acf、b/181577191)

バグの修正

  • Fragment 1.3.2 で生じる回帰を修正しました。NavHostFragment などが使用する setPrimaryNavFragment オペレーションが含まれる FragmentTransaction をポップすると、popEnter アニメーションが実行されなくなっていました。(I38c87、b/183877426)
  • FragmentContainerView で、すべての Fragment に新しい WindowInsets のセットがディスパッチされるようになり、各フラグメントがインセットを個別に使用できるようになりました。(I63f68、b/172153900)
  • カスタム Dialog クラスのコンテナと同じ ID を持つコンテナに子フラグメントが追加された場合でも、DialogFragment が適切に処理されるようになりました。これにより、BottomSheetDialog などのダイアログによって内部で使用される ID の再利用時に生じていたビュー階層の問題が修正されました。(Ie6279、b/180021387)
  • FragmentManager.dump() が、アクティブなフラグメントのリスト内の最初のフラグメントを適切にインデントするようになりました。(If5c33、b/183705451)

新しいステート マネージャーのバグの修正

  • フラグメントの新しいステート マネージャーが、hide オペレーションによる終了遷移を適切に処理するようになりました。(I9e4de、b/184830265)

バージョン 1.3.2

2021 年 3 月 24 日

androidx.fragment:fragment:1.3.2、androidx.fragment:fragment-ktx:1.3.2、androidx.fragment:fragment-testing:1.3.2 がリリースされました。バージョン 1.3.2 に含まれる commit については、こちらをご覧ください。

新しいステート マネージャーのバグの修正

  • popBackStack() と commit() の両方のオペレーションを同時に実行すると、最後のオペレーションで一部のポップ アニメーションおよび入力アニメーションが実行されるのではなく、すべてのアニメーションの方向が設定されるようになりました。(I7072e、b/181142246)
  • 共有要素階層内のビューでは、共有要素の遷移を行う際に遷移名がクリアされなくなります。(I4d4a6、b/179934757)

依存関係の更新

  • Fragment が Activity 1.2.2 に依存するようになりました。Fragment 1.3.1 以上を使用する場合の、Activity の InvalidFragmentVersionForActivityResult lint チェックに関する問題を修正しました。
  • Fragment が Lifecycle 2.3.1 に依存するようになりました。

バージョン 1.3.1

2021 年 3 月 10 日

androidx.fragment:fragment:1.3.1、androidx.fragment:fragment-ktx:1.3.1、androidx.fragment:fragment-testing:1.3.1 がリリースされました。バージョン 1.3.1 に含まれる commit については、こちらをご覧ください。

新機能

  • DialogFragment 内のダイアログが DecorView を介して ViewTree オーナーにアクセスできるようになり、ComposeView で DialogFragment を使用できるようになりました。(Ib9290、b/180691023)

バグの修正

  • FragmentContainerView を使用してすでに RESUMED 状態のアクティビティにインフレートされたフラグメントが、構成の変更後に適切に表示されるようになりました。(Ie14c8、b/180538371)
  • フラグメント toString() の末尾に余分な } がなくなりました(I54705、b/177761088)
  • FragmentActivity のオーバーライド済みメソッドが、基本メソッド javaDoc を適切に継承するようになりました(I736ce、b/139548782)
  • setFragmentResult と setFragmentResultListener のドキュメントのパラメータ ドキュメントが更新され、null 許容を受け取らなくなったことが反映されました(I990ba、b/178348386)

新しいステート マネージャーのバグの修正

  • mFocusedView によって生じるフラグメントでのメモリリークを修正しました(Ib4e9e、b/179925887)
  • トランザクションの表示 / 非表示を使用したときに、フラグメントが onCreateOptionsMenu を適切に呼び出すようになりました(I8bce8、b/180255554)
  • フラグメントが配置される前に遷移し始める子フラグメントが、適切に RESUMED 状態に移行するようになりました(Ic11e6、b/180825150)
  • <fragment> タグを使用してインフレートされたフラグメントが、常に RESUMED 状態に移行するようになりました(I452ac、I9fa49)

依存関係の更新

バージョン 1.3.0

2021 年 2 月 10 日

androidx.fragment:fragment:1.3.0、androidx.fragment:fragment-ktx:1.3.0、androidx.fragment:fragment-testing:1.3.0 がリリースされました。バージョン 1.3.0 に含まれる commit については、こちらをご覧ください。

1.2.0 以降の主な変更

  • 新しいステート マネージャー: FragmentManager の大幅な内部の書き換えにより、ライフサイクル イベント、アニメーション、遷移のディスパッチ、延期されたフラグメントの処理方法に関するさまざまな問題が修正されました。
  • Activity Result API の統合: Activity 1.2.0 に導入された ActivityResultRegistry API に対するサポートを追加しました。これにより、startActivityForResult() + onActivityResult() と requestPermissions() + onRequestPermissionsResult() のフローを処理する際に Fragment でメソッドをオーバーライドする必要がなくなり、これらのフローをテストするためのフックを提供できるようになります。更新されたアクティビティからの結果の取得をご覧ください。

    • このリリースでは、無効なリクエスト コードと、以前のバージョンの FragmentActivity で Activity Result API の動作を妨げる権限リクエストのディスパッチに関する多くの問題が修正されました。FragmentActivity または AppCompatActivity で Activity Result API を使用するには、Fragment 1.3.0 にアップグレードする必要があります。
  • Fragment Result API: FragmentManager の新しい API を介して 2 つの Fragment 間で結果を受け渡すためのサポートを追加しました。これは、階層フラグメント(親 / 子)、DialogFragment、ナビゲーションのフラグメントに対して機能します。また、少なくとも STARTED の間の結果は、自分のフラグメントのみに送信されます。これらの新しい API を優先して、ターゲット フラグメント API のサポートが終了しました。Fragment Result API を使用して結果を取得するをご覧ください。

  • FragmentOnAttachListener: FragmentActivity と Fragment の onAttachFragment() コールバックのサポートが終了しました。より柔軟な代替手段を提供するために、新しく FragmentOnAttachListener が追加されました。これにより、onAttachFragment() を個別のテスト可能なリスナーにデリゲートしたり、直接の子 FragmentManager 以外の FragmentManager にリスナーを追加したりできるようになりました。

  • FragmentScenario の改善: fragment-testing アーティファクトの FragmentScenario クラスが Kotlin に書き換えられ、さまざまな改善が行われました。

    • FragmentScenario は setMaxLifecycle() を使用して moveToState() を実装することにより、すべての API レベルで一貫した動作を保証し、Fragment の状態を基になる Activity から分離するようになりました。
    • FragmentScenario は初期の Lifecycle.State を設定できるようになり、各 Lifecycle.State に初めて移行する前にフラグメントの状態のアサーションを行えるようになりました。
    • onFragment の FragmentScenario API の代替機能を Kotlin で具体化された拡張メソッド withFragment(値を返すことができます)の形式で追加しました。指定されたブロックで発生した例外を再スローする点が特に重要です。
  • ViewTree のサポート: Lifecycle 2.3.0 と SavedState 1.1.0 に追加された ViewTreeLifecycleOwner.get(View)、ViewTreeViewModelStoreOwner.get(View)、ViewTreeSavedStateRegistryOwner API に対するサポートを Fragment に追加し、Fragment 内で View を使用する際に、ViewModelStoreOwner として、またはフラグメントのビュー Lifecycle に関連付けられた SavedStateRegistryOwner、LifecycleOwner として Fragment を返すようになりました。

  • TRANSIT_ アニメーションの変更: フラグメントのデフォルトのエフェクト(TRANSIT_FRAGMENT_OPEN、TRANSIT_FRAGMENT_CLOSE、TRANSIT_FRAGMENT_FADE)は、Animation の代わりに Animator を使用するようになりました。これらのアニメーターのビルドに使用するリソースは非公開になりました。

  • setRetainInstance() のサポート終了: Fragment の setRetainInstance() メソッドのサポートが終了しました。ViewModels の導入により、デベロッパーは、アクティビティ、フラグメント、ナビゲーションのグラフに関連付けることができる状態を保持するための特定の API を使用できるようになりました。これにより、デベロッパーは漏洩の一般的な原因を回避しつつ、保持された状態(つまり、ViewModel のコンストラクタとそれが受け取る onCleared() コールバック)の単一の作成と破棄の有用なプロパティを維持する一方、通常の保持されないフラグメントを使用し、保持する必要がある特定の状態を個別に保持できます。

  • ViewPager 1 アダプターのサポート終了: ViewPager2 1.0.0 のリリースに伴い、ViewPager とやり取りするための FragmentPagerAdapter クラスと FragmentStatePagerAdapter クラスのサポートが終了しました。ViewPager から ViewPager2 に移行するをご覧ください。

バージョン 1.3.0-rc02

2021 年 1 月 27 日

androidx.fragment:fragment:1.3.0-rc02、androidx.fragment:fragment-ktx:1.3.0-rc02、androidx.fragment:fragment-testing:1.3.0-rc02 がリリースされました。バージョン 1.3.0-rc02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 構成の変更後、親 DialogFragment が子 DialogFragment の上に表示される問題を修正しました。これにより、子ダイアログ フラグメントが常に親ダイアログ フラグメントの上に表示されるようになりました。(I30806、b/177439520)
  • Animation を使用して hide オペレーションを行うと、非表示フラグメントがアニメーションの終了時に点滅する問題を修正しました。(I57e22、b/175417675)
  • ビュー階層が追加される前に遷移が追加されたフラグメントが、適切に RESUMED 状態に移行するようになりました。(I1fc1d、b/177154873)

新しいステート マネージャーのバグの修正

  • Fragment のビュー Lifecycle が CREATED 状態に移行する前に Fragment のビューが破棄された場合に、Lifecycle が適切に処理されるようになりました。これにより、「INITIALIZED からのイベントはありません」という例外を回避できます。(eda2bd、b/176138645)
  • Animator を使用する Fragment が、FragmentContainerView の使用時に正しい順序で表示されるようになりました。(Id9aa3、b/176089197)

バージョン 1.3.0-rc01

2020 年 12 月 16 日

androidx.fragment:fragment:1.3.0-rc01、androidx.fragment:fragment-ktx:1.3.0-rc01、androidx.fragment:fragment-testing:1.3.0-rc01 がリリースされました。バージョン 1.3.0-rc01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • onPrepareOptionsMenu() が onCreateOptionsMenu() と同じロジックに従うようになり、親フラグメントが setMenuVisibility(false) を呼び出したときに呼び出されなくなりました。(Id7de8、b/173203654)

新しいステート マネージャーのバグの修正

  • Animation を含むフラグメントを FragmentContainerView に追加してからポップ オペレーションでその追加を中断した場合のリークと視覚的アーティファクトを修正しました。(I952d8)
  • onCreate() メソッドまたは onViewCreated() メソッドでフラグメントが置き換えられた場合に、フラグメントのビューがビュー階層に残る問題を修正しました。(I8a7d5)
  • Fragment のルートビューが再開されたときに、フォーカスが適切に復元されるようになりました。(Ifc84b)
  • 同じフラグメント トランザクションでポップ オペレーションと置換オペレーションを組み合わせた場合に、適切なアニメーションが表示されるようになりました。(Ifd4e4、b/170328691)

バージョン 1.3.0-beta02

2020 年 12 月 2 日

androidx.fragment:fragment:1.3.0-beta02、androidx.fragment:fragment-ktx:1.3.0-beta02、androidx.fragment:fragment-testing:1.3.0-beta02 がリリースされました。バージョン 1.3.0-beta02 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentScenario が Kotlin に完全に変換されました。ソースとバイナリの互換性は、FragmentAction に対する Kotlin 1.4 の機能インターフェースを使用することで維持されます。(I19d31)

動作の変更

  • class または android:name 属性を使用してフラグメントをインフレートしない FragmentContainerView を FragmentActivity の外部で使用できるようになりました。(Id4397、b/172266337)
  • フラグメントの最大ライフサイクルを DESTROYED に設定しようとすると、IllegalArgumentException がスローされるようになりました。(Ie7651、b/170765622)
  • DESTROYED 状態で FragmentScenario を初期化すると IllegalArgumentException がスローされるようになりました。(I73590、b/170765622)

新しいステート マネージャーのバグの修正

  • Animator またはいずれかの TRANSIT_FRAGMENT_ オプションを使用しているフラグメント遷移を中断した場合に、ビューが最終状態に到達しない問題を修正しました。(I92426、b/169874632)
  • exit する Animation を含むフラグメントが適切に破棄されない問題を修正しました。(I83d65)
  • エフェクトが元に戻されたフラグメントを exit した場合に、フラグメントが適切にキャンセルされて適切な enter エフェクトで再開されるようになりました。(I62226、b/167092035)
  • hide() の exit Animator が実行されない問題を修正しました。(Id7ffe)
  • フラグメントを延期してすぐに開始した場合に、適切に表示されるようになりました。(Ie713b、b/170022857)
  • アニメーション中にフォーカスされているビューを削除するフラグメントが RESUMED になったとき、デタッチされたビューにフォーカスを復元しようとしなくなりました。(I38c65、b/172925703)

外部からの協力

  • FragmentFactory が、異なる ClassLoader インスタンスのフラグメント クラスを個別にキャッシュに保存するようになりました。Simon Schiller 氏に感謝いたします。(#87、b/113886460)

バージョン 1.3.0-beta01

2020 年 10 月 1 日

androidx.fragment:fragment:1.3.0-beta01、androidx.fragment:fragment-ktx:1.3.0-beta01、androidx.fragment:fragment-testing:1.3.0-beta01 がリリースされました。バージョン 1.3.0-beta01 に含まれる commit については、こちらをご覧ください。

新機能

  • setMaxLifecycle() は、フラグメントが CREATED に移行していない限り、Lifecycle 状態を INITIALIZING に設定できるようになりました。(b/159662173)

API の変更

動作の変更

  • フラグメントのリソース ファイルが正常に非公開になりました。(aosp/1425237)

バグの修正

  • <fragment> タグを使用してインフレートされたフラグメントは、ビューがコンテナに追加されてから STARTED に移行するまで適切に待機するようになりました。(I02f4c)
  • フラグメントが表示され、setMaxLifecycle() から CREATED に変わると、exit エフェクトを適切に実行するようになりました。(b/165822335)
  • バックスタックに追加されていないデタッチされたフラグメントを削除しても、メモリリークが発生しなくなりました。(Nicklas Ansman Giertz 氏ご提供)(b/166489383)
  • アクティブなフラグメントは常に null 以外の FragmentManager を持ち、null 以外の FragmentManager を持つフラグメントは常にアクティブと見なされるようになります。(aosp/1422346)
  • フラグメントのデフォルトのエフェクト(TRANSIT_FRAGMENT_OPEN、TRANSIT_FRAGMENT_CLOSE、TRANSIT_FRAGMENT_FADE)では、Animation の代わりに Animator が使用されるようになりました。(b/166155034)

新しいステート マネージャーのバグの修正

  • フラグメントは、アニメーションを開始する直前に、ビュー フォーカス状態を適切に復元するようになりました。(Icc256)
  • 共有要素の遷移のみを持つフラグメントは、特殊エフェクトを正しく処理するようになりました。つまり、実際には最終状態に移行するようになります。(Iaebc7、b/166658128)
  • フラグメント ビューを、破棄される前に常にコンテナから削除するようにしました。(Id5876)
  • 新しいステート マネージャーは、enter するフラグメント ビューを追加する前に、exit するフラグメント ビューを常に削除するようになりました。(I41a6e)
  • 新しいステート マネージャーは、フラグメント ビューの表示に対する明示的な変更に準拠するようになりました。つまり、アニメーションの開始前に enter するフラグメントのビューを INVISIBLE に設定した場合、実際には表示されないままになっています。(b/164481490)
  • フラグメントは Animations よりも Animators を優先します。つまり、両方を持つフラグメントは Animator のみを実行し、Animation を無視します。(b/167579557)
  • 新しいステート マネージャーでは、enter するアニメーションを使用しているときにフラグメントがフラッシュすることがなくなりました。(b/163084315)

既知の問題

新しいステート マネージャーを使用しているときに、前のフラグメントに戻るのではなく、特殊エフェクトの enter 中に戻るボタンを押すと、以前のフラグメントは追加されることなく画面が真っ白になります。(b/167259187、b/167092035、b/168442830)

バージョン 1.3.0-alpha08

2020 年 8 月 19 日

androidx.fragment:fragment:1.3.0-alpha08、androidx.fragment:fragment-ktx:1.3.0-alpha08、androidx.fragment:fragment-testing:1.3.0-alpha08 がリリースされました。バージョン 1.3.0-alpha08 に含まれる commit については、こちらをご覧ください。

新しいステート マネージャー

このリリースでは、FragmentManager の内部状態管理で大幅なリファクタリングを行っています。これは、ライフサイクル関連のメソッド、アニメーション、遷移のディスパッチ、延期されたトランザクションの処理方法に影響します。これはデフォルトで有効です。詳しくは、Fragments 内部の再構築に関するブログ投稿をご覧ください。(b/139536619、b/147749580)

  • FragmentManager.enableNewStateManager(boolean) の試験運用版の API を使用すると、FragmentManager が新しいステート マネージャーを使用するかどうかを制御できます。(I7b6ee)

以下の問題は、新しいステート マネージャーを使用した場合にのみ解決されます。

  • 新しいフラグメントを開始する前に、replace オペレーションの以前のフラグメントを正しく停止するようになりました。(b/161654580)
  • Fragment では、同じフラグメントでアニメーション同士が競合するのを防ぐようになりました。これにより、Animation がすべての Transition エフェクトをオーバーライドする事態と、個々のフラグメントの Animator と Transition の両方が実行される事態を避けることができます。(b/149569323)
  • 最後に enter したフラグメントと最初に exit したフラグメントだけでなく、enter、exit したすべてのフラグメントの enterTransition と exitTranstion が実行されるようになりました。(b/149344150)
  • 延期されたフラグメントが CREATED 状態で停止せず、他のフラグメントとともに STARTED に移行するようになりました。(b/129035555)
  • 延期され順序変更されたトランザクションと順序変更されていないトランザクションが混在している場合に、FragmentManager がオペレーションを順不同で実行する問題を修正しました。(b/147297731)
  • 複数のフラグメントを同時にポップしても、フラグメントの延期時に中途のフラグメントが一時的に表示されることがなくなりました。(b/37140383)
  • FragmentManager が、onAttachFragment() コールバック内から findFragmentById() または findFragmentByTag() を呼び出したとき、正しいフラグメントを返すようになりました。(b/153082833)
  • 破棄されるフラグメントを置き換えるフラグメントが延期されているときに、Fragments が破棄されるフラグメントの onCreateView() を呼び出さないようになりました。(b/143915710)
  • フレームワークの Transition と AndroidX の Transition のインスタンスを組み合わせようとしたときのエラー メッセージに、不正な遷移のフラグメントが記載されるようになりました。(b/155574969)

動作の変更

  • フラグメントの onCreate() ライフサイクル メソッドで ActivityResultLauncher の launch() を呼び出すことができるようになりました。(b/161464278)
  • onCreate() の後に registerForActivityResult() を呼び出すと、通知なしに構成変更後の結果提供に失敗するのではなく、それが許可されていないことを示す例外がスローされるようになりました。(b/162255449)
  • FragmentActivity は、Activity 1.2.0-alpha08 で導入された OnContextAvailableListener API を使用して、FragmentManager の状態を復元するようになりました。FragmentActivity のサブクラスに追加されたリスナーは、このリスナーの後で実行されます。(I513da)

バグの修正

  • startIntentSenderForResult() の使用時に無視されていた ActivityOptions が適用されるようになりました。(b/162247961)

既知の問題

  • 新しいステート マネージャーを使用する場合、onViewCreated() より後と onResume() より前にフラグメントのルートビューの可視設定を直接設定すると、ルートビューの表示を制御する FragmentManager が、設定した可視設定をオーバーライドしてしまいます。回避策として、常に hide() と show() のオペレーションを使用して、フラグメントの可視設定を変更する必要があります。(b/164481490)

バージョン 1.3.0-alpha07

2020 年 7 月 22 日

androidx.fragment:fragment:1.3.0-alpha07、androidx.fragment:fragment-ktx:1.3.0-alpha07、androidx.fragment:fragment-testing:1.3.0-alpha07 がリリースされました。バージョン 1.3.0-alpha07 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentScenario は、Fragment を常に RESUMED 状態に移行するのではなく、CREATED、STARTED、RESUMED のいずれかの Lifecycle 初期状態を設定できるようになりました。(b/159662750)
  • onFragment の FragmentScenario API の代替機能を Kotlin で具体化された拡張メソッド withFragment(値を返すことができます)の形式で追加しました。指定されたブロックで発生した例外を再スローする点が特に重要です。(b/158697631)

動作の変更

  • FragmentScenario は setMaxLifecycle() を使用して moveToState() を実装することにより、すべての API レベルで一貫した動作を保証し、Fragment の状態を基になる Activity から分離するようになりました。(b/156527405)
  • ViewTreeSavedStateRegistryOwner によって返される SavedStateRegistryOwner が、フラグメント ビューの Lifecycle に関連付けられるようになりました。これにより、フラグメントのビューと同時に状態を保存して復元できるようになります。(b/158503763)

バグの修正

  • フラグメントは、フラグメントのビューがアタッチされるのを待ってから ViewCompat.requestApplyInsets() を呼び出すようになりました。これにより、インセット リクエストがドロップされるケースが回避されます。(b/158095749)
  • clearFragmentResultListener の呼び出しで、ライフサイクル オブザーバーが適切にクリアされるようになりました。(b/159274993)

バージョン 1.3.0-alpha06

2020 年 6 月 10 日

androidx.fragment:fragment:1.3.0-alpha06、androidx.fragment:fragment-ktx:1.3.0-alpha06、androidx.fragment:fragment-testing:1.3.0-alpha06 がリリースされました。バージョン 1.3.0-alpha06 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentActivity と Fragment の onAttachFragment() コールバックのサポートが終了しました。より柔軟な代替手段を提供するために、新しく FragmentOnAttachListener が追加されました。これにより、onAttachFragment() を個別のテスト可能なリスナーにデリゲートしたり、直接の子 FragmentManager 以外の FragmentManager にリスナーを追加したりできるようになりました。(I06d3d)

バグの修正

  • 親フラグメントの表示状態が、子フラグメントの前に復元されるようになりました。これにより、DialogFragment が別の DialogFragment を子フラグメントとして表示する場合の構成変更後の表示順序の問題が修正されました。(b/157195715)
  • UseRequireInsteadOfGet lint チェックで ?. 演算子と !! 演算子の連鎖使用が正しく処理されない問題を修正しました。(b/157677616)

バージョン 1.3.0-alpha05

2020 年 5 月 20 日

androidx.fragment:fragment:1.3.0-alpha05、androidx.fragment:fragment-ktx:1.3.0-alpha05、androidx.fragment:fragment-testing:1.3.0-alpha05 がリリースされました。バージョン 1.3.0-alpha05 に含まれる commit については、こちらをご覧ください。

新機能

API の変更

  • setFragmentResult() API と setFragmentResultListener() API がそれぞれ、非 null の Bundle と FragmentResultListener を受け取るようになりました。以前に設定された結果またはリスナーを明示的にクリアするには、新しい clearFragmentResult() メソッドと clearFragmentResultListener() メソッドを使用します。(b/155416778)
  • ラムダを取る setFragmentResultListener() Kotlin 拡張機能が inline としてマークされるようになりました。(b/155323404)

動作の変更

  • 以前サポートが終了した、Fragment の startActivityForResult()、startIntentSenderForResult()、requestPermissions が、内部的に ActivityResultRegistry を使用するようになりました。このため、これらの API を使用する際はリクエスト コードに下位ビット(0xFFFF)のみを使用するという制限がなくなりました。(b/155518741)

ドキュメントの更新情報

  • Fragment(@LayoutRes int) コンストラクタと DialogFragment(@LayoutRes int) コンストラクタに関するドキュメントを拡張し、デフォルトの FragmentFactory を使用している場合はサブクラスの引数なしのコンストラクタから呼び出す必要があることを明確にしました。(b/153042497)

バージョン 1.3.0-alpha04

2020 年 4 月 29 日

androidx.fragment:fragment:1.3.0-alpha04、androidx.fragment:fragment-ktx:1.3.0-alpha04、androidx.fragment:fragment-testing:1.3.0-alpha04 がリリースされました。バージョン 1.3.0-alpha04 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentManager の新しい API を介して 2 つのフラグメント間で結果を受け渡すためのサポートを追加しました。これは、階層フラグメント(親 / 子)、DialogFragment、ナビゲーションのフラグメントに対して機能します。また、少なくとも STARTED の間の結果は、自分のフラグメントのみに送信されます。(b/149787344)

API の変更

  • ターゲット Fragment API は非推奨になりました。フラグメント間でデータを受け渡すには、代わりに新しい Fragment Result API を使用する必要があります。(b/149787344)
  • フラグメントの startActivityForResult()/onActivityResult() API と requestPermissions()/onRequestPermissionsResult() API は非推奨になりました。Activity Result API を使用してください。(aosp/1290887)
  • Activity 1.2.0-alpha04 からの互換性を破る変更: prepareCall() メソッドの名前が registerForActivityResult() に変更されました。(aosp/1278717)

バグの修正

  • フラグメントのライフサイクルの動作が反映され、onSaveInstanceState() が呼び出される前にフラグメントの getViewLifecycleOwner() が停止するようになりました。(b/154645875)
  • フラグメントで setMenuVisibility(false) を呼び出すと、子フラグメントによって提供されるメニューの表示が正しく変更されるようになりました。(b/153593580)
  • FragmentContainerView を使用して DialogFragment のビュー階層にフラグメントを追加する際の illegalStateException を修正しました。(b/154366601)
  • アクティビティの外部でフラグメントをホストするときに、フラグメントの getDefaultViewModelProviderFactory() メソッドがクラッシュしなくなりました。(b/153762914)

バージョン 1.3.0-alpha03

2020 年 4 月 1 日

androidx.fragment:fragment:1.3.0-alpha03、androidx.fragment:fragment-ktx:1.3.0-alpha03、androidx.fragment:fragment-testing:1.3.0-alpha03 がリリースされました。バージョン 1.3.0-alpha03 に含まれる commit については、こちらをご覧ください。

API の変更

  • Fragment の prepareCall メソッドが final になりました。(b/152439361)

バグの修正

  • BottomSheetDialogFragment の使用時に Fragment 1.3.0-alpha02 で発生する回帰を修正しました。(b/151652127、aosp/1263328、aosp/1265163)
  • 構成の変更後にフラグメントから prepareCall を使用するとクラッシュする問題を修正しました。(b/152137004)
  • setTargetFragment() の使用時に共有要素と終了遷移が無視される問題を修正しました。(b/152023196)
  • Fragment 1.2.4 以降: 保持されたフラグメントの難読化を許可するように Fragment ProGuard ルールを更新しました。(b/151605338)
  • Fragment 1.2.4 以降: DialogFragment クラスで FragmentLiveDataObserve lint ルールを無効にしました。そのライフサイクルとビューのライフサイクルは常に同期するので、observe の呼び出しに this または viewLifecycleOwner を安全に使用できるようになりました。(b/151765086)

依存関係の変更

  • フラグメントが Activity 1.2.0-alpha03 に依存するようになったことで、Activity 1.2.0-alpha02 に導入された Activity Result API が大幅に改善されました。

バージョン 1.3.0-alpha02

2020 年 3 月 18 日

androidx.fragment:fragment:1.3.0-alpha02、androidx.fragment:fragment-ktx:1.3.0-alpha02、androidx.fragment:fragment-testing:1.3.0-alpha02 がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit については、こちらをご覧ください。

新機能

  • Activity 1.2.0-alpha02 に導入された ActivityResultRegistry API に対するサポートを追加しました。これにより、startActivityForResult() + onActivityResult() と requestPermissions() + onRequestPermissionsResult() のフローを処理する際にフラグメントでメソッドをオーバーライドする必要がなくなり、これらのフローをテストするためのフックを提供できるようになります。更新されたアクティビティから結果を取得するをご覧ください。(b/125158199)

API の変更

  • DialogFragment に、onCreateView() がデフォルトでインフレートするレイアウトを示す @LayoutRes を受け取るコンストラクタを追加しました。(b/150327080)
  • onActivityCreated() メソッドは非推奨になりました。フラグメントのビューをタッチするコードは onViewCreated()(onActivityCreated() の直前に呼び出される)、他の初期化コードは onCreate() で実行する必要があります。アクティビティの onCreate() が完了した際にコールバックを受け取るには、onAttach() のアクティビティの Lifecycle に LifeCycleObserver を登録し、onCreate() のコールバックを受け取ったら削除する必要があります。 (b/144309266)

バグの修正

  • Fragment 1.2.3: onCreateDialog() 内から getLayoutInflater() を呼び出した際に StackOverflowError が発生する DialogFragment のバグを修正しました。(b/117894767、aosp/1258664)
  • Fragment 1.2.3: 未使用のフラグメント クラスを削除できるように、フラグメントに含まれる ProGuard ルールの範囲を縮小しました。(b/149665169)
  • Fragment 1.2.3 以降: Kotlin プロパティ名をシャドウするローカル変数名を使用した場合の UseRequireInsteadOfGet lint チェックでの誤検出を修正しました。(b/149891163)
  • Fragment 1.2.3 以降: レイアウトのプレビューで誤ったコンストラクタを使用しても、FragmentContainerView が UnsupportedOperationException をスローしなくなりました。(b/149707833)

既知の問題

  • BottomSheetDialogFragment が画面上でダイアログを正しい位置に配置しなくなりました。(b/151652127)

バージョン 1.3.0-alpha01

2020 年 3 月 4 日

androidx.fragment:fragment:1.3.0-alpha01、androidx.fragment:fragment-ktx:1.3.0-alpha01、androidx.fragment:fragment-testing:1.3.0-alpha01 がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください。

新機能

  • Lifecycle 2.3.0-alpha01 に追加された ViewTreeLifecycleOwner.get(View) API に対するサポートを追加し、フラグメントの viewLifecycleOwner が onCreateView() によって返される任意のビューの LifecycleOwner として返されるようにしました。(aosp/1182955)

API の変更

  • フラグメントの setRetainInstance() メソッドのサポートが終了しました。ViewModels の導入により、デベロッパーは、アクティビティ、フラグメント、ナビゲーションのグラフに関連付けることができる状態を保持するための特定の API を使用できるようになりました。これにより、デベロッパーは漏洩の一般的な原因を回避しつつ、保持された状態(つまり、ViewModel のコンストラクタとそれが受け取る onCleared() コールバック)の単一の作成と破棄の有用なプロパティを維持する一方、通常の保持されないフラグメントを使用し、保持する必要がある特定の状態を個別に保持できます。(b/143911815)
  • ViewPager2 1.0.0 のリリースに伴い、ViewPager と連携するための FragmentPagerAdapter クラスと FragmentStatePagerAdapter クラスは非推奨になりました。ViewPager から ViewPager2 への移行をご覧ください。(b/145132715)

バグの修正

  • Fragment ProGuard ルールで、すべての Fragment インスタンスではなく、使用されるデフォルトのコンストラクタである Fragment のみが正しく保持されるようになり、Fragment 1.2.1 で発生する回帰が修正されました。(b/149665169)
  • Fragment 1.2.2 に追加された require___() Lint ルールが、ブロックされた Kotlin プロパティ名(view)と同じ名前を持つローカル変数に対して誤検出しなくなりました。(b/149891163)
  • Android Studio でレイアウト プレビューを使用した場合に、FragmentContainerView が UnsupportedOperationException をスローしなくなりました。(b/149707833)
  • 状態が保存された後に追加された保持フラグメントが、構成の変更が行われるたびに再作成、破棄されない問題を修正しました。(b/145832397)

バージョン 1.2.5

バージョン 1.2.5

2020 年 6 月 10 日

androidx.fragment:fragment:1.2.5、androidx.fragment:fragment-ktx:1.2.5、androidx.fragment:fragment-testing:1.2.5 がリリースされました。バージョン 1.2.5 に含まれる commit については、こちらをご覧ください。

バグの修正

  • フラグメントのライフサイクルの動作が反映され、onSaveInstanceState() が呼び出される前にフラグメントの getViewLifecycleOwner() が停止するようになりました。これは以前に Fragment 1.3.0-alpha04 でリリースされたものです。(b/154645875)
  • フラグメントで setMenuVisibility(false) を呼び出すと、子フラグメントによって提供されるメニューの表示が正しく変更されるようになりました。これは以前に Fragment 1.3.0-alpha04 でリリースされたものです。(b/153593580)

バージョン 1.2.4

バージョン 1.2.4

2020 年 4 月 1 日

androidx.fragment:fragment:1.2.4、androidx.fragment:fragment-ktx:1.2.4、androidx.fragment:fragment-testing:1.2.4 がリリースされました。バージョン 1.2.4 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 保持されたフラグメントの難読化を許可するように Fragment ProGuard ルールを更新しました。(b/151605338)
  • ライフサイクルとビューのライフサイクルが常に同期されることで、observe の呼び出しに this または viewLifecycleOwner を安全に使用できるようにするため、DialogFragment クラスの FragmentLiveDataObserve Lint ルールを無効にしました。(b/151765086)

バージョン 1.2.3

バージョン 1.2.3

2020 年 3 月 18 日

androidx.fragment:fragment:1.2.3、androidx.fragment:fragment-ktx:1.2.3、androidx.fragment:fragment-testing:1.2.3 がリリースされました。バージョン 1.2.3 に含まれる commit については、こちらをご覧ください。

バグの修正

  • onCreateDialog() 内から getLayoutInflater() を呼び出す際に StackOverflowError が発生する DialogFragment のバグを修正しました。(b/117894767、aosp/1258665)
  • 未使用のフラグメント クラスを削除できるように、フラグメントに含まれる ProGuard ルールの範囲を縮小しました。(b/149665169)
  • Kotlin プロパティ名をブロックするローカル変数名を使用したときの UseRequireInsteadOfGet Lint チェックの誤検出を修正しました。(b/149891163)
  • レイアウトのプレビューで誤ったコンストラクタを使用しても、FragmentContainerView が UnsupportedOperationException をスローしなくなりました。(b/149707833)

バージョン 1.2.2

バージョン 1.2.2

2020 年 2 月 19 日

androidx.fragment:fragment:1.2.2、androidx.fragment:fragment-ktx:1.2.2、androidx.fragment:fragment-testing:1.2.2 がリリースされました。バージョン 1.2.2 に含まれる commit については、こちらをご覧ください。

新しい Lint チェック

  • Lint では、viewLifecycleOwner を LifecycleOwner として使用して、onCreateView()、onViewCreated()、onActivityCreated() の OnBackPressedDispatcher に呼び出しを行うことをおすすめします。(b/142117657)
  • fragment-testing アーティファクトの使用時に正しい debugImplementation を使用していることを確認する新しい Lint チェックを追加しました。(b/141500106)
  • get および require と同等の値を含むすべての Fragment API に対して、checkNotNull(get___())、requireNonNull(get___())、get___()!! の代わりに関連付けられた require___() メソッドを使用して、より詳細なエラー メッセージを生成することをフラグメントが提案するようになりました。(aosp/1202883)

バグの修正

  • フラグメントの ProGuard ファイルを修正して、R8 警告を回避するようにしました(b/148963981)
  • observe を使用して observe の livedata-ktx 拡張メソッド バージョンを処理する際に、viewLifecycleOwner を使用することを提案する既存の Lint チェックを改善しました。(b/148996309)
  • 多くの Lint チェックの書式を修正しました(aosp/1157012)

外部寄与

  • Slack に代わり、require___() Lint のチェックに協力してくださった Zac Sweers に感謝します。(aosp/1202883)

バージョン 1.2.1

バージョン 1.2.1

2020 年 2 月 5 日

androidx.fragment:fragment:1.2.1、androidx.fragment:fragment-ktx:1.2.1、androidx.fragment:fragment-testing:1.2.1 がリリースされました。バージョン 1.2.1 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Class インスタンス(または Kotlin の具体化されたバージョン)を受け取る add と replace メソッドを介して追加されたフラグメントで、デフォルトのコンストラクタが ProGuard によって保持されるようになりました。(b/148181315)
  • FragmentStatePagerAdapter と FragmentPagerAdapter は、finishUpdate() の実行時に FragmentManager によってスローされた例外をキャッチしなくなりました。(aosp/1208711)
  • <fragment> タグによって追加されたフラグメントで FragmentManager.findFragment() が機能しない問題を修正しました。(b/147784323)
  • <fragment> タグを使用してインフレートされたフラグメントは、レイアウト内で常に onCreate() の前に onInflate() の呼び出しを受け取るようになりました。(aosp/1215856)
  • FragmentManager インスタンスで toString() を呼び出したとき、アクティビティがすでに破棄されている場合に NullPointerException がスローされなくなりました。(b/148189412)

依存関係の変更

バージョン 1.2.0

バージョン 1.2.0

2020 年 1 月 22 日

androidx.fragment:fragment:1.2.0、androidx.fragment:fragment-ktx:1.2.0、androidx.fragment:fragment-testing:1.2.0 がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください。

1.1.0 以降の重要な変更

  • FragmentContainerView: FragmentContainerView は、動的に追加される Fragment に強く推奨されるコンテナです。FrameLayout または他のレイアウトの使用を置き換えます。<fragment> タグと同じ class、android:name、android:tag(省略可)もサポートしていますが、<fragment> で使用するカスタム コードパスの代わりに通常の FragmentTransaction を使用して、この初期フラグメントを追加します。
  • onDestroyView() のタイミング: Fragment が、アニメーションの終了、フレームワークの遷移の終了、AndroidX の遷移の終了を待ってから(Transition 1.3.0 を使用している場合)、onDestroyView() を呼び出すようになりました。
  • クラスベースの add() と replace(): Class<? extends Fragment> とオプションの引数の Bundle を取る FragmentTransaction に、add() と replace() の新しいオーバーロードを追加しました。これらのメソッドは FragmentFactory を使用して、追加する Fragment のインスタンスを作成します。具体化された型を使用する Kotlin 拡張機能(つまり fragmentTransaction.replace<YourFragment>(R.id.container))も fragment-ktx に追加されました。
  • Lifecycle ViewModel SavedState の統合: SavedStateViewModelFactory は、Fragment で by viewModels()、by activityViewModels()、ViewModelProvider コンストラクタ、または ViewModelProviders.of() を使用するときのデフォルト ファクトリになりました。
  • 新しい lint チェック: 新しい lint チェックが追加されました。これにより、onCreateView()、onViewCreated()、onActivityCreated() から LiveData を監視するときに getViewLifecycleOwner() を使用していることを確認できます。
  • getFragmentManager() のサポートの終了: Fragment の getFragmentManager() メソッドと requireFragmentManager() メソッドのサポートが終了し、単一の getParentFragmentManager() メソッドに置き換えられました。このメソッドは、Fragment が追加された null 以外の FragmentManager を返します(isAdded() を使用して、呼び出しが安全かどうかを判断できます)。
  • FragmentManager.enableDebugLogging() のサポートの終了: 静的 FragmentManager.enableDebugLogging メソッドのサポートが終了しました。FragmentManager はタグ FragmentManager の Log.isLoggable() を遵守するようになり、アプリを再コンパイルせずに DEBUG または VERBOSE のログを有効化できるようになりました。

既知の問題

  • FragmentContainerView で class または android:name 属性でのみ参照されるフラグメントは、ProGuard によって自動的に保持されないため、フラグメント クラスごとに保持ルールを手動で追加する必要があります。(b/142601969)
  • FragmentContainerView とともに XML で class または android:name を使用して NavHostFragment を追加するとき、アクティビティの onCreate() で findNavController() を使用できません。(b/142847973)

バージョン 1.2.0-rc05

2020 年 1 月 8 日

androidx.fragment:fragment:1.2.0-rc05、androidx.fragment:fragment-ktx:1.2.0-rc05、androidx.fragment:fragment-testing:1.2.0-rc05 がリリースされました。バージョン 1.2.0-rc05 に含まれる commit については、こちらをご覧ください。

バグの修正

  • アクティビティを破棄する際に onViewCreated() が誤って呼び出される原因となっていた、<fragment> タグ使用時の Fragment 1.2.0-rc04 の回帰を修正しました。(b/146290333)
  • <fragment> タグで追加した Fragment が、レイアウト内にまれにしか存在しない場合でも(横向きレイアウトのみなど)、非設定が正しくクリアされるようになりました。その結果、こうした Fragment はインスタンス化されるのではなく、レイアウト内にない場合でも正しく CREATED に移動されるようになりました。ただし、ライフサイクル メソッドを介して移動することはありません。(b/145769287)

バージョン 1.2.0-rc04

2019 年 12 月 18 日

androidx.fragment:fragment:1.2.0-rc04、androidx.fragment:fragment-ktx:1.2.0-rc04、androidx.fragment:fragment-testing:1.2.0-rc04 がリリースされました。バージョン 1.2.0-rc04 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 表示の問題を回避するために、TRANSIT_FRAGMENT_OPEN、TRANSIT_FRAGMENT_CLOSE、TRANSIT_FRAGMENT_FADE のアニメーションを調整しました。(b/145468417)

バージョン 1.2.0-rc03

2019 年 12 月 4 日

androidx.fragment:fragment:1.2.0-rc03、androidx.fragment:fragment-ktx:1.2.0-rc03、androidx.fragment:fragment-testing:1.2.0-rc03 がリリースされました。バージョン 1.2.0-rc03 に含まれる commit については、こちらをご覧ください。

バグの修正

  • 終了アニメーション / 遷移の実行中に、削除された Fragment が findFragmentById() / findFragmentByTag() によって返されるという、意図しない動作の変更を修正しました。(b/143982969、aosp/1167585)
  • 含まれるアクティビティが onSaveInstanceState() を呼び出すとき、子フラグメントが親より前に正しく停止するようになりました。(b/144380645)
  • 非表示の Fragment が表示された後にビューが誤って INVISIBLE とされる問題を修正しました。(b/70793925)
  • Fragment 共有要素の遷移で、回転、スケーリングなどがされたビューを処理するようになりました。(b/142835261)

ドキュメントの更新情報

  • setUserVisibleHint() に関する非推奨のドキュメントを明確化しました。(b/143897055)
  • FragmentFactory の設定が子 FragmentManager にも影響することをより明確に示すように、setFragmentFactory() と getFragmentFactory() のドキュメントを改善しました。(aosp/1170095)

依存関係の変更

  • Fragment が Lifecycle 2.2.0-rc03、Lifecycle ViewModel SavedState 1.0.0-rc03、Activity 1.1.0-rc03 に依存するようになりました。

バージョン 1.2.0-rc02

2019 年 11 月 7 日

androidx.fragment:fragment:1.2.0-rc02、androidx.fragment:fragment-ktx:1.2.0-rc02、androidx.fragment:fragment-testing:1.2.0-rc02 がリリースされました。バージョン 1.2.0-rc02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • Kotlin の場合、onCreateView()、onViewCreated()、onActivityCreated()(Fragment 1.2.0-rc01 で導入)の LiveData を監視する際に、getViewLifecycleOwner() を使用していた LintFix は、getViewLifecycleOwner() の代わりに Kotlin のプロパティ アクセス構文 viewLifecycleOwner を使用するようになりました。(aosp/1143821)

バージョン 1.2.0-rc01

2019 年 10 月 23 日

androidx.fragment:fragment:1.2.0-rc01、androidx.fragment:fragment-ktx:1.2.0-rc01、androidx.fragment:fragment-testing:1.2.0-rc01 がリリースされました。バージョン 1.2.0-rc01 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentContainerView で、android:name に加えて、<fragment> タグの機能をミラーリングする class 属性に対応できるようになりました。(b/142722242)
  • 新しい Lint チェックが追加されました。これにより、onCreateView()、onViewCreated()、onActivityCreated() から LiveData を監視するときに getViewLifecycleOwner() を使用していることを確認できます。(b/137122478)

バグの修正

  • DialogFragment の onDismiss コールバックと onCancel コールバックは、渡された DialogInterface が null 以外であり、実行時に getDialog() が null 以外を返すことを保証するようになりました。(b/141974033)
  • FragmentContainerView には、インフレーションの一部として class または android:name によって定義された Fragment が追加され、直後に findFragmentById() と findFragmentByTag() が機能できるようになりました。(b/142520327)
  • 保存中の状態に起因する FragmentContainerView の IllegalStateException が修正されました。(b/142580713)
  • FragmentContainerView クラスが難読化された場合に FragmentContainerView で発生する UnsupportedOperationException の問題を修正しました。(b/142657034)

既知の問題

  • FragmentContainerView で class または android:name 属性でのみ参照されるフラグメントは、ProGuard によって自動的に保持されないため、フラグメント クラスごとに保持ルールを手動で追加する必要があります。aapt2 でこれが修正されるまで FragmentContainerView に移行することを提案する Lint ルールを無効にしました。(b/142601969)

バージョン 1.2.0-beta02

2019 年 10 月 11 日

androidx.fragment:fragment:1.2.0-beta02、androidx.fragment:fragment-ktx:1.2.0-beta02、androidx.fragment:fragment-testing:1.2.0-beta02 がリリースされました。バージョン 1.2.0-beta02 に含まれる commit については、こちらをご覧ください。

バグの修正

  • フラグメントの onInflate() で FragmentContainerView から適切な属性を受けられない問題を修正しました(NavHostFragment などを使用する場合に互換性を破る問題)。(b/142421837)

バージョン 1.2.0-beta01

2019 年 10 月 9 日

androidx.fragment:fragment:1.2.0-beta01、androidx.fragment:fragment-ktx:1.2.0-beta01、androidx.fragment:fragment-testing:1.2.0-beta01 がリリースされました。バージョン 1.2.0-beta01 に含まれる commit については、こちらをご覧ください。

新機能

  • FragmentContainerView には、初期フラグメントを付加するためのサポートが追加されています。このフラグメントには、android:name とオプションの android:tag XML 属性のサポートが追加されています。<fragment> タグとは異なり、FragmentContainerView は内部で通常の FragmentTransaction を使用して初期フラグメントを追加し、FragmentContainerView で他の FragmentTransaction 操作を許可して、レイアウトのビュー バインディングの使用を有効にします。(b/139830628、b/141177981)
  • フラグメントに Lint 警告が追加され、<fragment> を FragmentContainerView に置き換えるための簡単な修正が提示されるようになりました。(b/139830056)

バグの修正

  • androidx.transition の使用時の ClassCastException を修正しました。(b/140680619)
  • Transition 1.3.0-beta01 を使用している場合、Fragment が、(Fragment 1.2.0-alpha03 と Fragment 1.2.0-alpha02 でそれぞれ修正されたフレームワーク遷移とアニメーションに加えて)androidx.transition 遷移が終了するまで待ってから onDestroyView() をディスパッチするようになりました。(aosp/1119841)
  • Transition 1.3.0-beta01 を使用する場合、Fragment は、同じコンテナで新しい遷移 / アニメーションを開始する前に、androidx.transition 遷移を適切にキャンセルするようになりました。(aosp/1119841)
  • FragmentContainerView を使用している場合に、Fragment のルートビューで androidx.transition 遷移を使用したときの API 17 以前の問題を修正しました。(b/140361893)
  • fragment-testing アーティファクトは AndroidX Test 1.2.0 に依存するようになり、最新の Espresso 3.2.0 との非互換性が修正されました。(b/139100149)
  • FragmentManager 内で Log.w の使用箇所が削除されました。(aosp/1126468)

既知の問題

  • フラグメントの onInflate() で、FragmentContainerView から適切な属性を受けられない(NavHostFragment などを使用する場合に互換性を破る問題)(b/142421837)

バージョン 1.2.0-alpha04

2019 年 9 月 18 日

androidx.fragment:fragment:1.2.0-alpha04、androidx.fragment-ktx:example:1.2.0-alpha04、androidx.fragment:fragment-testing:1.2.0-alpha04 がリリースされました。バージョン 1.2.0-alpha04 に含まれる commit については、こちらをご覧ください。

API の変更

  • Fragment の getFragmentManager() メソッドと requireFragmentManager() メソッドのサポートが終了し、単一の getParentFragmentManager() メソッドに置き換えられました。このメソッドは、Fragment が追加された null 以外の FragmentManager を返します(isAdded() を使用して、呼び出しが安全かどうかを判断できます)。(b/140574496)
  • 静的 FragmentManager.enableDebugLogging メソッドのサポートが終了しました。FragmentManager はタグ FragmentManager の Log.isLoggable() を遵守するようになり、アプリを再コンパイルせずに DEBUG または VERBOSE のログを有効化できるようになりました。(aosp/1116591)

バグの修正

  • フラグメントが正常に破棄され、他のフラグメントの終了アニメーションが実行されるようになりました。(b/140574199)
  • フラグメントにコンテナがない場合にフラグメントが Activity.findViewById() を呼び出す問題を修正しました。(aosp/1116431)

バージョン 1.2.0-alpha03

2019 年 9 月 5 日

androidx.fragment:fragment:1.2.0-alpha03、androidx.fragment:fragment-ktx:1.2.0-alpha03、androidx.fragment:fragment-testing:1.2.0-alpha03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • FragmentContainerView を final に変更(b/140133091)

バグの修正

  • FragmentContainerView が、バックスタックからフラグメントをポップするときに描画順序を適切に反転するようになりました。(b/139104187)
  • フラグメントのポップと新しいフラグメントの追加を同時に行うと誤ったアニメーションが実行される問題を修正しました。(b/111659726)
  • フラグメントが、(Fragment 1.2.0-alpha02 で修正されたアニメーションに加えて)遷移が終了するまで待ってから onDestroyView() をディスパッチするようになりました。(b/138741697)

バージョン 1.2.0-alpha02

2019 年 8 月 7 日

androidx.fragment:fragment:1.2.0-alpha02、androidx.fragment:fragment-ktx:1.2.0-alpha02、androidx.fragment:fragment-testing:11.2.0-alpha02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • SavedStateViewModelFactory は、Fragment で by viewModels()、by activityViewModels()、ViewModelProvider コンストラクタ、または ViewModelProviders.of() を使用するときのデフォルト ファクトリになりました。(b/135716331)
  • FragmentTransaction で setTransition とともに TRANSIT_FRAGMENT_OPEN、TRANSIT_FRAGMENT_CLOSE、TRANSIT_FRAGMENT_FADE を使用する場合のデフォルト アニメーションを、Android 10 デバイスのアクティビティで使用されるアニメーションと一致するように更新しました。(aosp/1012812、aosp/1014730)

API の変更

  • 動的に追加されるフラグメントに強く推奨されるコンテナとして FragmentContainerView を導入し、FrameLayout などの使用を置き換えます。これにより、アニメーションの Z オーダーの問題と、フラグメントにディスパッチするウィンドウ インセットが修正されます。(b/37036000、aosp/985243、b/136494650)
  • 含まれているフラグメントをフラグメントでインフレートされたビューから取得する、静的な FragmentManager.findFragment(View) メソッドを追加しました。Kotlin 拡張機能は fragment-ktx でも利用できます。(aosp/1090757)
  • Class<? extends Fragment> とオプションの引数の Bundle を取る FragmentTransaction に、add() と replace() のオーバーロードを追加しました。これらのメソッドは FragmentFactory を使用して、追加する Fragment のインスタンスを作成します。具体化された型を使用する Kotlin 拡張機能(つまり fragmentTransaction.replace<YourFragment>(R.id.container))も fragment-ktx に追加されました。(b/126124987)
  • @MainThread アノテーションが Fragment ライフサイクル コールバックに追加されました。(b/127272564)
  • FragmentTransaction と FragmentManager.BackStackEntry のパンくずリストタイトル関連の API はサービスが終了しました。(b/138252944)
  • FragmentTransaction の setTransitionStyle メソッドのサポートが終了しました。(aosp/1011537)
  • FragmentManager のメソッドの多くは abstract ではなくなりましたが、FragmentManager 自体は abstract のままです。インスタンス化または拡張を直接しないでください。引き続き getSupportFragmentManager()、getChildFragmentManager() などから既存のインスタンスのみを取得する必要があります。

バグの修正

  • Fragment 1.1.0-rc04 から: Fragment は、ポップされた Fragment の延期された遷移を正しくキャンセルするようになりました。(b/138251858)
  • Fragment 1.1.0-rc03 から: タイムアウトを複数回設定して postponeEnterTransition() を呼び出しても以前のタイムアウトがキャンセルされない問題を修正しました。(b/137797118)
  • Fragment 1.1.0-rc02 から: 現在のアイテムを削除するときに FragmentPagerAdapter と FragmentStatePagerAdapter で発生するクラッシュを修正しました。(b/137209870)
  • Fragment は、onDestroyView() をディスパッチする前にアニメーションの終了を待つようになりました。(b/136110528)
  • 親 Fragment をアニメーション化するときに、子フラグメントとその子孫からのフラグメント アニメーションが適切に処理されるようになりました。(b/116675313)
  • 共有要素の遷移を使用し、ポップ操作と追加操作を組み合わせた場合の NullPointerException を修正しました。(b/120507394)
  • Robolectric テストで FragmentPagerAdapter と FragmentStatePagerAdapter を使用している場合に発生する IllegalStateException の回避策を追加しました。(b/137201343)

バージョン 1.2.0-alpha01

2019 年 7 月 2 日

androidx.fragment:fragment:1.2.0-alpha01、androidx.fragment:fragment-ktx:1.2.0-alpha01、androidx.fragment:fragment-testing:1.2.0-alpha01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • FragmentManager は、Fragment のビューをアタッチした後、onViewCreated() を呼び出す直前に requestApplyInsets() を呼び出すようになりました。これにより、ビューのインセットは常に正しくなります。(b/135945162)

バグの修正

  • replace() の前に setPrimaryNavigationFragment() を使用した FragmentTransaction をポップする場合の NullPointerException を修正しました。(b/134673465)

バージョン 1.1.0

バージョン 1.1.0

2019 年 9 月 5 日

androidx.fragment:fragment:1.1.0、androidx.fragment:fragment-ktx:1.1.0、androidx.fragment:fragment-testing:1.1.0 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

1.0.0 以降の重要な変更

  • fragment-testing: fragment-testing アーティファクトは、フラグメントを単独でテストするための FragmentScenario クラスを提供します。詳細については、アプリのフラグメントをテストするドキュメントをご覧ください。
  • FragmentFactory: FragmentFactory を FragmentManager に設定してフラグメント インスタンスの作成を管理できるようになり、引数のないコンストラクタを持つという厳格な要件がなくなりました。
  • ViewModels 用 Kotlin プロパティ デリゲート: fragment-ktx アーティファクトに、Kotlin プロパティ デリゲートが 2 つ含まれるようになりました。個々のフラグメントに関連付けられた ViewModels にアクセスするための by viewModels() と、特定のアクティビティを対象にして ViewModels にアクセスする by activityViewModels() です。
  • 最大 Lifecycle: FragmentTransaction で setMaxLifecycle() を呼び出すことで、Fragment の最大 Lifecycle 状態を設定できるようになりました。サポート終了となった setUserVisibleHint() の代替です。FragmentPagerAdapter と FragmentStatePagerAdapter には新しいコンストラクタがあり、これで新しい動作に切り替えられます。
  • FragmentActivity LayoutId コンストラクタ: FragmentActivity のサブクラスで、R.layout ID を受け取る FragmentActivity のコンストラクタを必要に応じて呼び出せるようになりました。これにより、onCreate() 内で setContentView() を呼び出す代わりに、コンテンツ ビューとして設定するレイアウトを指定できるようになりました。これは、サブクラスに引数なしのコンストラクタを含めるという要件を変更するものではありません。
  • Fragment LayoutId コンストラクタ: Fragment のサブクラスで、R.layout ID を受け取る Fragment のコンストラクタを必要に応じて呼び出せるようになりました。これにより、onCreateView() をオーバーライドする代わりに、このフラグメントのために使用する必要があるレイアウトを指定できるようになりました。インフレートされたレイアウトは onViewCreated() で構成できます。
  • タイムアウトを伴う延期: タイムアウトを取る、postponeEnterTransition() の新しいオーバーロードが追加されました。

バージョン 1.1.0-rc04

2019 年 8 月 7 日

androidx.fragment:fragment:1.1.0-rc04、androidx.fragment:fragment-ktx:1.1.0-rc04、androidx.fragment:fragment-testing:1.1.0-rc04 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • Fragment は、ポップされた Fragment の延期された遷移を正しくキャンセルするようになりました。(b/138251858)

バージョン 1.1.0-rc03

2019 年 7 月 19 日

androidx.fragment:fragment:1.1.0-rc03、androidx.fragment:fragment-ktx:1.1.0-rc03、androidx.fragment:fragment-testing:1.1.0-rc03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • タイムアウトを複数回設定して postponeEnterTransition() を呼び出しても以前のタイムアウトがキャンセルされない問題を修正しました。(b/137797118)

バージョン 1.1.0-rc02

2019 年 7 月 17 日

androidx.fragment:fragment:1.1.0-rc02、androidx.fragment:fragment-ktx:1.1.0-rc02、androidx.fragment-testing:fragment:1.1.0-rc02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • 現在のアイテムを削除するときに FragmentPagerAdapter と FragmentStatePagerAdapter で発生するクラッシュを修正しました。(b/137209870)

バージョン 1.1.0-rc01

2019 年 7 月 2 日

androidx.fragment:fragment:1.1.0-rc01、androidx.fragment:fragment-ktx:1.1.0-rc01、androidx.fragment:fragment-testing:1.1.0-rc01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • 遷移の実行中に show() または hide() オペレーションを使用した場合に、フラグメントの表示が適切に更新されるようになりました。(b/133385058)
  • replace() の前に setPrimaryNavigationFragment() を使用した FragmentTransaction をポップする場合の NullPointerException を修正しました。(b/134673465)

バージョン 1.1.0-beta01

2019 年 6 月 5 日

androidx.fragment:fragment:1.1.0-beta01、androidx.fragment:fragment-ktx:1.1.0-beta01、androidx.fragment:fragment-testing:1.1.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

  • ネストされた Fragment の androidx.lifecycle.Lifecycle コールバック(特に STARTED、RESUMED、PAUSED、STOPPED、DESTROYED 関連)が適切にネストされるようになりました。(b/133497591)
  • Fragment の onCreate() に登録された OnBackPressedCallback インスタンスが、子 FragmentManager よりも適切に優先されるようになりました。(b/133175997)
  • 親フラグメントが置き換えられるときに、子フラグメントがアニメーション化されなくなりました。(b/121017790)
  • animateLayoutChanges="true" の使用時に Fragment のアニメーションと遷移が無視されるようになりました。これにより、Fragment が適切に破棄されなかった問題が修正されます。(b/116257087)

バージョン 1.1.0-alpha09

2019 年 5 月 16 日

androidx.fragment:fragment:1.1.0-alpha09、androidx.fragment:fragment-ktx:1.1.0-alpha09、androidx.fragment:fragment-testing:1.1.0-alpha09 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • メインのナビゲーション フラグメントが変更されたとき、Fragment が新しい onPrimaryNavigationFragmentChanged(boolean) メソッドへのコールバックを受け取るようになりました。aosp/960857

バグの修正

  • 親 Fragment が削除されたとき、子 Fragment によってインフレートされたメニュー項目が正しく削除されるようになりました。b/131581013

バージョン 1.1.0-alpha08

2019 年 5 月 7 日

androidx.fragment:fragment:1.1.0-alpha08、androidx.fragment:fragment-ktx:1.1.0-alpha08、androidx.fragment:fragment-testing:1.1.0-alpha08 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

このリリースは、Preferences 1.1.0-alpha01 から 1.1.0-alpha04 と互換性がありません。このバージョンの Fragment を使用する場合は、Preferences 1.1.0-alpha05 にアップグレードしてください。

新機能

  • タイムアウトを取る postponeEnterTransition() の新しいオーバーロードが追加されました。今後 Fragment は自動的に startPostponedEnterTransition() を呼び出します。b/120803208

API の変更

  • 互換性を破る変更: Bundle を受け取っていた、以前サポートが終了した FragmentFactory instantiate メソッドが削除されました。aosp/953856
  • 互換性を破る変更: FragmentPagerAdapter と FragmentStatePagerAdapter の RESUME_ONLY_CURRENT_FRAGMENT 定数と USE_SET_USER_VISIBLE_HINT 定数の名前を、それぞれ BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT と BEHAVIOR_SET_USER_VISIBLE_HINT に変更しました。aosp/954782

バグの修正

  • setMaxLifecycle() によってライフサイクルを制限されていた Fragment は、最終状態に達する前に再開されなくなりました。b/131557151
  • setMaxLifecycle(Lifecycle.State.CREATED) を使用する場合に、Fragment のビューが適切に破棄されます。aosp/954180

バージョン 1.1.0-alpha07

2019 年 4 月 25 日

androidx.fragment:fragment:1.1.0-alpha07、androidx.fragment:fragment-ktx:1.1.0-alpha07、androidx.fragment:fragment-testing:1.1.0-alpha07 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • FragmentTransaction で setMaxLifecycle() を呼び出すことで、Fragment の最大 Lifecycle 状態を設定できるようになりました。サポート終了となった setUserVisibleHint() の代替です。FragmentPagerAdapter と FragmentStatePagerAdapter には新しいコンストラクタがあり、これで新しい動作に切り替えられます。(b/129780800)

API の変更

  • FragmentScenario の moveToState(STARTED) は、API レベル 24 以上のデバイスでしか呼び出せなくなりました。(b/129880016)

動作の変更

  • (b/129907905)の結果として、ホスティング アクティビティが再作成されるときに、バックスタックのフラグメントは onCreateView() へのコールバックを取得しません。onCreateView() は、フラグメントが表示状態になったとき(つまりバックスタックがポップされたとき)にのみ呼び出されるようになりました。

バグの修正

  • XML で <fragment> タグを使用する際の問題と、FragmentActivity または AppCompatActivity の contentLayoutId コンストラクタを修正しました。(b/129907905)
  • 構成の変更後、バックスタック上のフラグメントが少なくとも CREATED に移動されず、ViewModel と子が保持するフラグメントが適切に破棄されない問題を修正しました。(b/129593351)
  • インスタンス状態が保存された後、保持されているフラグメントの同期解除によって発生する restoreSaveState のクラッシュを修正しました。(b/130433793)(aosp/947824)
  • FragmentManager にバックスタックがある場合、フラグメント ライフサイクルとともに追加された OnBackPressedCallback が呼び出されない問題を修正しました。詳細については、androidx.activity 1.0.0-alpha07 をご覧ください。(aosp/948209)
  • Fragment は、アニメーションに LAYER_TYPE_HARDWARE を強制しなくなりました。ハードウェア レイヤ アニメーションが特に必要な場合は、アニメーションの一部として設定してください。(b/129486478)

バージョン 1.1.0-alpha06

2019 年 4 月 3 日

androidx.fragment:fragment:1.1.0-alpha06、androidx.fragment:fragment-ktx:1.1.0-alpha06、androidx.fragment:fragment-testing:1.1.0-alpha06 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • FragmentManager によってスローされる例外で、メッセージに Fragment の名前が含まれるようになりました。(b/67759402)

API の変更

  • Fragment と FragmentActivity に、@LayoutRes int を受け取る 2 つ目のコンストラクタが追加されました。このコンストラクタは、クラスをアノテーションする以前の動作を @ContentView で置き換えます。この方法は、アプリとライブラリの両方のモジュールで機能します。(b/128352521)
  • FragmentActivity の onActivityResult() が @CallSuper として適切にマークされるようになりました。(b/127971684)
  • 引数 Bundle を受け取る FragmentFactory の instantiate メソッドはサポートが終了しました。アプリは Bundle を受け取らない新しい instantiate オーバーロードを使用する必要があります。(b/128836103)
  • FragmentScenario メソッドが @StyleRes で適切にアノテーション付けされるようになりました。(aosp/924193)
  • FragmentTabHost が非推奨になりました。(b/127971835)
  • FragmentActivity の getThemedContext() を削除しました。(aosp/934078)

バグの修正

  • 受信 Fragment が画面上で点滅する原因となった 1.1.0-alpha05 での回帰を修正しました。(b/129405432)
  • popBackStack+replace+popBackStack の一連のオペレーション後に、メインのナビゲーション フラグメントが失われる問題を修正しました。(b/124332597)
  • Fragment の状態を復元するときに Activity で @ContentView コンストラクタを使用する場合の問題を修正しました。(b/127313094)
  • 既存のターゲット Fragment を FragmentManager にまだアタッチされていない Fragment で置き換える場合の、setTargetFragment() のロジックを修正しました。(aosp/932156)

バージョン 1.1.0-alpha05

2019 年 3 月 13 日

androidx.fragment:fragment:1.1.0-alpha05、androidx.fragment:fragment-ktx:1.1.0-alpha05、androidx.fragment:fragment-testing:1.1.0-alpha05 がリリースされました。このバージョンに含まれる commit の完全なリストについては、こちらをご覧ください。

新機能

  • @ContentView アノテーション ルックアップがキャッシュされるようになりました(b/123709449)

動作の変更

  • 別の FragmentManager にアタッチされた Fragment で remove()、hide()、show()、detach()、setPrimaryNavigationFragment() を呼び出した場合に、エラーが発生せずに失敗するのではなく、IllegalStateException をスローするようになりました。(aosp/904301)

バグの修正

  • FragmentActivity の onNewIntent が @CallSuper で正しくマークされるようになりました。(b/124120586)
  • getDialog().dismiss() または getDialog().cancel() の使用時に DialogFragment の onDismiss() が 2 回呼び出されることがある問題を修正しました。(b/126563750)

バージョン 1.1.0-alpha04

2019 年 2 月 7 日

androidx.fragment:fragment 1.1.0-alpha04、androidx.fragment:fragment-ktx 1.1.0-alpha04、androidx.fragment:fragment-testing 1.1.0-alpha04 がリリースされました。

新機能

  • onCreateView() をオーバーライドする代わりに、どのレイアウト XML ファイルを拡張するかを指定できる @ContentView クラス アノテーションのサポートが追加されました。onViewCreated() でビュー関連の処理を行うことをおすすめします。(aosp/837619)
  • fragment-testing が androidx.test:core-ktx 1.1.0 安定版に依存するようになりました。(b/121209673)
  • openActionBarOverflowOrOptionsMenu を FragmentScenario とともに使用して、Fragment がホストするオプション メニューをテストできるようになりました。(b/121126668)

API の変更

  • @NonNull Bundle を返す、または IllegalStateException をスローする requireArguments() メソッドを追加しました。(b/121196360)
  • getLifecycle()、getViewLifecycleOwner()、getViewLifecycleOwnerLiveData() をオーバーライドすべきでない、今後のリリースで最終版になるという注記が追加されました。現在このメソッドをオーバーライドしている場合は、機能をリクエストしてください(aosp/880714)
  • getViewModelStore() はオーバーライドすべきでない、今後のリリースで最終版になるという注記が追加されました。現在このメソッドをオーバーライドしている場合は、機能をリクエストしてください(aosp/880713)
  • Fragment の旧リリースとのバイナリ互換性の問題を修正しました。(aosp/887877)(aosp/889834)

バグの修正

  • null を setTargetFragment() に渡した場合に、ターゲット フラグメントが正しくクリアされます。(aosp/849969)
  • onDestroy() またはそれ以降で、ターゲット Fragment を使用できないことがある問題を修正しました。(b/122312935)
  • DialogFragment の onDismiss() が、onDestroy() の前に呼び出されるようになりました。(aosp/874133)(aosp/890734)

バージョン 1.1.0-alpha03

2018 年 12 月 17 日

新機能

  • Fragment が BundleSavedStateRegistryOwner を実装し、新しくリリースされた SavedState ライブラリに依存するようになりました。(aosp/824380)
  • 含まれている Activity に関連付けられた ViewModel を取得するために、by activityViewModels Kotlin プロパティのデリゲートが追加されました。(b/119050253)
  • by viewModels Kotlin プロパティのデリゲートが拡張されて、ViewModelStoreOwner を取得するためのオプションのラムダ法を使用するようになりました。これにより、親 Fragment または他のカスタム ViewModelStoreOwner を val viewModel: MyViewModel by viewModels(::requireParentFragment) などのコードで渡せるようになりました。(b/119050253)

API の変更

  • FragmentScenario で、Theme.AppCompat などのテーマを指定できるようになりました(b/119054431)。これは互換性を破る変更です。
  • @NonNull View を返す、または IllegalStateException をスローする requireView() メソッドを追加しました。(b/120241368)
  • @NonNull Fragment を返す、または IllegalStateException をスローする requireParentFragment() メソッドを追加しました。(b/112103783)

バグの修正

  • 「IllegalStateException: Failure saving state」を修正しました。b/120814739
  • 保存されたインスタンスの状態から復元される Fragment が、常に null 以外の Bundle を受け取るようになりました。(b/119794496)
  • 削除された Fragment が、再度追加された場合に Lifecycle オブジェクトを再利用しなくなりました。(b/118880674)

バージョン 1.1.0-alpha02

2018 年 12 月 3 日

新機能

  • FragmentScenario の Kotlin 拡張機能により、FragmentFactory インスタンスを渡す代わりに、ラムダを使用して Fragment を作成できるようになりました。(aosp/812913)

バグの修正

  • バックスタックでネストされた Fragment を使用する場合の IllegalStateException を修正しました。(b/119256498)
  • FragmentScenario.recreate() を FragmentFactory とともに使用するときのクラッシュを修正しました。(aosp/820540)
  • Fragment が削除された後、ターゲット Fragment にアクセスできない問題を修正しました。(aosp/807634)

バージョン 1.1.0-alpha01

2018 年 11 月 5 日

これは、androidx.test:core API 上に構築された fragment-testing アーティファクトと FragmentScenario の最初のリリースです。詳細については、フラグメント テストのドキュメントをご覧ください。

新機能

  • フラグメントを単独でテストするための新しい FragmentScenario クラス
  • 任意の FragmentManager で FragmentFactory を設定して、新しいフラグメントのインスタンスのインスタンス化方法を管理できるようになりました。
  • フラグメントから ViewModels を取得するために、新しい by viewModels() Kotlin プロパティのデリゲートが追加されました。
  • 保留中の入力イベント(クリックなど)がフラグメントの onStop() でキャンセルされるようになりました。

API の変更

  • null 値許容アノテーションがフラグメント API サーフェス全体に大幅に拡張されました。

バグの修正

  • LiveData 内からのフラグメント操作の失敗原因となっていた問題を修正しました。 (b/77944637)

既知の問題

  • FragmentManager からフラグメントが削除された後、ターゲット フラグメントにアクセスできません。
  • fragment-testing が、正しい androidx.test:core:1.0.0 ではなく、androidx.test:core:1.0.0-beta01 に依存しています。