Fragment

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

依存関係の宣言

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

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

Groovy

dependencies {
    def fragment_version = "1.3.6"

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

Kotlin

dependencies {
    val fragment_version = "1.3.6"

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

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

フィードバック

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

新しい問題を報告する

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

バージョン 1.4.0

バージョン 1.4.0-alpha10

2021 年 9 月 29 日

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

lint

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

ドキュメントの更新情報

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

バージョン 1.4.0-alpha09

2021 年 9 月 15 日

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

新機能

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

API の変更

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

バグの修正

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

バージョン 1.4.0-alpha08

2021 年 9 月 1 日

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

バグの修正

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

バージョン 1.4.0-alpha05

2021 年 7 月 21 日

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

バグの修正

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

依存関係の更新

バージョン 1.4.0-alpha04

2021 年 6 月 30 日

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

API の変更

  • FragmentManager は、内部で SavedStateRegistry を使用して状態を保存するようになりました。FragmentControllersaveAllState() メソッドと restoreSavedState() メソッドのサポートも終了しました。FragmentController を使用して FragmentActivity の外部でフラグメントをホストする場合は、FragmentHostCallbacksSavedStateRegistryOwner を実装する必要があります。(Iba68eb/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-alpha03androidx.fragment:fragment-ktx:1.4.0-alpha03androidx.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 の呼び出しの制限を元に戻しました。これによりアプリがクラッシュすることはなくなりました。(6b8dddb/190622202

バグの修正

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

バージョン 1.4.0-alpha02

2021 年 6 月 2 日

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

新機能

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

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

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

動作の変更

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

バージョン 1.4.0-alpha01

2021 年 5 月 18 日

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

新機能

  • FragmentContainerView は、コンテナに最後に追加されたフラグメントを返す getFragment() メソッドを提供するようになりました。このメソッドは findFragmentById() と同じロジックで FragmentContainerView の ID を使用しますが、呼び出しを連鎖させることができます。(Ife17ab/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() を使用してフラグメント トランザクションを以前にコミットしたことがなければ、何もしません。
  • トランザクションから追加されたすべてのフラグメントの状態が保存されます。つまり、すべてのフラグメントの View 状態が保存され、すべてのフラグメントの onSaveInstanceState() が呼び出されてその状態が復元され、それらのフラグメントに関連付けられたすべての ViewModel インスタンスが保持されます(それらにおいて onCleared()呼び出されません)。

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

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

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

FragmentStrictMode

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

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

API の変更

新しい lint チェック

  • DialogFragment 内で LayoutInflater.from(Context) を使用すると、UseGetLayoutInflater lint チェックで警告が表示されるようになりました。LayoutInflater を適切に取得するには、常にダイアログ フラグメントの getLayoutInflater() メソッドを使用する必要があります。(#156b/170781346
  • DialogFragmentonCreateDialog() メソッドで setOnCancelListener または setOnDismissListener を呼び出すと、DialogFragmentCallbacksDetector lint チェックで警告が表示されるようになりました。これらのリスナーは DialogFragment 自体によって所有されており、これらのコールバックを受信するには onCancel()onDismiss() をオーバーライドする必要があります。(#171b/181780047b/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 がデフォルトのファクトリとして作成されます。(I5cbfab/186097368
  • Fragment 1.3.4 以降: API 29 で FragmentContainerView を使用した場合に、インセットが無期限にディスパッチされることがなくなります。これにより、BottomNavigationBar および FloatingActionButton インスタンスに関する問題が解決されます。(I1bb78b/186012452
  • Fragment 1.3.4 以降: プロセスの異常終了後に、フラグメントの結果バンドルから Parcelable を取得できるようになりました。(I65932b/187443158
  • Fragment 1.3.4 以降: ViewGroup で共有要素の遷移を行うときに、ViewGroup で transitionGroup が false に設定されていれば、適切に遷移するようになりました。(I99675

外部からの協力

バージョン 1.3.6

バージョン 1.3.6

2021 年 7 月 21 日

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

バグの修正

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

依存関係の更新

バージョン 1.3.5

バージョン 1.3.5

2021 年 6 月 16 日

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

バグの修正

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

バージョン 1.3.4

バージョン 1.3.4

2021 年 5 月 18 日

androidx.fragment:fragment:1.3.4androidx.fragment:fragment-ktx:1.3.4androidx.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 がデフォルトのファクトリとして作成されます。(I5cbfab/186097368
  • API 29 で FragmentContainerView を使用した場合に、インセットが無期限にディスパッチされることがなくなります。これにより、BottomNavigationBar および FloatingActionButton インスタンスに関する問題が解決されます。(I1bb78b/186012452
  • プロセスの異常終了後に、フラグメントの結果バンドルから Parcelable を取得できるようになりました。(I65932b/187443158
  • ViewGroup で共有要素の遷移を行うときに、ViewGroup で transitionGroup が false に設定されていれば、適切に遷移するようになりました。(I99675

バージョン 1.3.3

バージョン 1.3.3

2021 年 4 月 21 日

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

新機能

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

バグの修正

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

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

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

バージョン 1.3.2

バージョン 1.3.2

2021 年 3 月 24 日

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

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

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

依存関係の更新

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

バージョン 1.3.1

バージョン 1.3.1

2021 年 3 月 10 日

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

新機能

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

バグの修正

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

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

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

依存関係の更新

バージョン 1.3.0

バージョン 1.3.0

2021 年 2 月 10 日

androidx.fragment:fragment:1.3.0androidx.fragment:fragment-ktx:1.3.0androidx.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: FragmentActivityFragmentonAttachFragment() コールバックのサポートが終了しました。より柔軟な代替手段を提供するために、新しく FragmentOnAttachListener が追加されました。これにより、onAttachFragment() を個別のテスト可能なリスナーにデリゲートしたり、直接の子 FragmentManager 以外の FragmentManager にリスナーを追加したりできるようになりました。

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

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

  • TRANSIT_ アニメーションの変更: フラグメントのデフォルトのエフェクト(TRANSIT_FRAGMENT_OPENTRANSIT_FRAGMENT_CLOSETRANSIT_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-rc02androidx.fragment:fragment-ktx:1.3.0-rc02androidx.fragment:fragment-testing:1.3.0-rc02 がリリースされました。バージョン 1.3.0-rc02 に含まれる commit については、こちらをご覧ください

バグの修正

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

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

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

バージョン 1.3.0-rc01

2020 年 12 月 16 日

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

バグの修正

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

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

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

バージョン 1.3.0-beta02

2020 年 12 月 2 日

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

新機能

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

動作の変更

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

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

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

外部からの協力

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

バージョン 1.3.0-beta01

2020 年 10 月 1 日

androidx.fragment:fragment:1.3.0-beta01androidx.fragment:fragment-ktx:1.3.0-beta01androidx.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_OPENTRANSIT_FRAGMENT_CLOSETRANSIT_FRAGMENT_FADE)では、Animation の代わりに Animator が使用されるようになりました。(b/166155034

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

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

既知の問題

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

バージョン 1.3.0-alpha08

2020 年 8 月 19 日

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

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

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

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

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

  • 新しいフラグメントを開始する前に、replace オペレーションの以前のフラグメントを正しく停止するようになりました。(b/161654580
  • Fragment では、同じフラグメントでアニメーション同士が競合するのを防ぐようになりました。これにより、Animation がすべての Transition エフェクトをオーバーライドする事態と、個々のフラグメントの AnimatorTransition の両方が実行される事態を避けることができます。(b/149569323
  • 最後に enter したフラグメントと最初に exit したフラグメントだけでなく、enter、exit したすべてのフラグメントの enterTransitionexitTranstion が実行されるようになりました。(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() ライフサイクル メソッドで ActivityResultLauncherlaunch() を呼び出すことができるようになりました。(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-alpha07androidx.fragment:fragment-ktx:1.3.0-alpha07androidx.fragment:fragment-testing:1.3.0-alpha07 がリリースされました。バージョン 1.3.0-alpha07 に含まれる commit については、こちらをご覧ください

新機能

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

動作の変更

  • FragmentScenariosetMaxLifecycle() を使用して 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-alpha06androidx.fragment:fragment-ktx:1.3.0-alpha06androidx.fragment:fragment-testing:1.3.0-alpha06 がリリースされました。バージョン 1.3.0-alpha06 に含まれる commit については、こちらをご覧ください

新機能

  • FragmentActivityFragmentonAttachFragment() コールバックのサポートが終了しました。より柔軟な代替手段を提供するために、新しく 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-alpha05androidx.fragment:fragment-ktx:1.3.0-alpha05androidx.fragment:fragment-testing:1.3.0-alpha05 がリリースされました。バージョン 1.3.0-alpha05 に含まれる commit については、こちらをご覧ください

新機能

API の変更

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

動作の変更

  • 以前サポートが終了した、FragmentstartActivityForResult()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-alpha04androidx.fragment:fragment-ktx:1.3.0-alpha04androidx.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-alpha03androidx.fragment:fragment-ktx:1.3.0-alpha03androidx.fragment:fragment-testing:1.3.0-alpha03 がリリースされました。バージョン 1.3.0-alpha03 に含まれる commit については、こちらをご覧ください

API の変更

  • FragmentprepareCall メソッドが final になりました。(b/152439361

バグの修正

  • BottomSheetDialogFragment の使用時に Fragment 1.3.0-alpha02 で発生する回帰を修正しました。(b/151652127aosp/1263328aosp/1265163
  • 構成の変更後にフラグメントから prepareCall を使用するとクラッシュする問題を修正しました。(b/152137004
  • setTargetFragment() の使用時に共有要素と終了遷移が無視される問題を修正しました。(b/152023196
  • Fragment 1.2.4 以降: 保持されたフラグメントの難読化を許可するように Fragment ProGuard ルールを更新しました。(b/151605338
  • Fragment 1.2.4 以降: ライフサイクルとビューのライフサイクルが常に同期し、observe の呼び出しに this または viewLifecycleOwner を安全に使用できるようにするため、DialogFragment クラスで FragmentLiveDataObserve lint ルールを無効にしました。(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-alpha02androidx.fragment:fragment-ktx:1.3.0-alpha02androidx.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() のアクティビティの LifecycleLifeCycleObserver を登録し、onCreate() のコールバックを受け取ったら削除する必要があります。 (b/144309266

バグの修正

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

既知の問題

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

バージョン 1.3.0-alpha01

2020 年 3 月 4 日

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

新機能

  • Lifecycle 2.3.0-alpha01 に追加された ViewTreeLifecycleOwner.get(View) API に対するサポートを追加し、フラグメントの viewLifecycleOwneronCreateView() によって返される任意のビューの 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 でレイアウト プレビューを使用した場合に、FragmentContainerViewUnsupportedOperationException をスローしなくなりました。(b/149707833
  • 状態が保存された後に追加された保持フラグメントが、構成の変更が行われるたびに再作成、破棄されない問題を修正しました。(b/145832397

バージョン 1.2.5

バージョン 1.2.5

2020 年 6 月 10 日

androidx.fragment:fragment:1.2.5androidx.fragment:fragment-ktx:1.2.5androidx.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.4androidx.fragment:fragment-ktx:1.2.4androidx.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.3androidx.fragment:fragment-ktx:1.2.3androidx.fragment:fragment-testing:1.2.3 がリリースされました。バージョン 1.2.3 に含まれる commit については、こちらをご覧ください

バグの修正

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

バージョン 1.2.2

バージョン 1.2.2

2020 年 2 月 19 日

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

新しい Lint チェック

  • Lint では、viewLifecycleOwnerLifecycleOwner として使用して、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 を使用して observelivedata-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.1androidx.fragment:fragment-ktx:1.2.1androidx.fragment:fragment-testing:1.2.1 がリリースされました。バージョン 1.2.1 に含まれる commit については、こちらをご覧ください

バグの修正

  • Class インスタンス(または Kotlin の具体化されたバージョン)を受け取る addreplace メソッドを介して追加されたフラグメントで、デフォルトのコンストラクタが ProGuard によって保持されるようになりました。(b/148181315
  • FragmentStatePagerAdapterFragmentPagerAdapter は、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.0androidx.fragment:fragment-ktx:1.2.0androidx.fragment:fragment-testing:1.2.0 がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください

1.1.0 以降の重要な変更

  • FragmentContainerView: FragmentContainerView は、動的に追加される Fragment に強く推奨されるコンテナです。FrameLayout または他のレイアウトの使用を置き換えます。<fragment> タグと同じ classandroid:nameandroid: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 はタグ FragmentManagerLog.isLoggable() を遵守するようになり、アプリを再コンパイルせずに DEBUG または VERBOSE のログを有効化できるようになりました。

既知の問題

  • FragmentContainerViewclass または 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-rc05androidx.fragment:fragment-ktx:1.2.0-rc05androidx.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-rc04androidx.fragment:fragment-ktx:1.2.0-rc04androidx.fragment:fragment-testing:1.2.0-rc04 がリリースされました。バージョン 1.2.0-rc04 に含まれる commit については、こちらをご覧ください

バグの修正

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

バージョン 1.2.0-rc03

2019 年 12 月 4 日

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

バグの修正

  • 終了アニメーション / 遷移の実行中に、削除された Fragment が findFragmentById() / findFragmentByTag() によって返されるという、意図しない動作の変更を修正しました。(b/143982969aosp/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-rc02androidx.fragment:fragment-ktx:1.2.0-rc02androidx.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-rc01androidx.fragment:fragment-ktx:1.2.0-rc01androidx.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

バグの修正

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

既知の問題

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

バージョン 1.2.0-beta02

2019 年 10 月 11 日

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

新機能

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

バグの修正

  • androidx.transition の使用時の ClassCastException を修正しました。(b/140680619
  • Transition 1.3.0-beta01 を使用している場合、Fragment が、(Fragment 1.2.0-alpha03Fragment 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-alpha04androidx.fragment-ktx:example:1.2.0-alpha04androidx.fragment:fragment-testing:1.2.0-alpha04 がリリースされました。バージョン 1.2.0-alpha04 に含まれる commit については、こちらをご覧ください

API の変更

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

バグの修正

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

バージョン 1.2.0-alpha03

2019 年 9 月 5 日

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

API の変更

  • FragmentContainerViewfinal に変更(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-alpha02androidx.fragment:fragment-ktx:1.2.0-alpha02androidx.fragment:fragment-testing:11.2.0-alpha02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

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

API の変更

  • 動的に追加されるフラグメントに強く推奨されるコンテナとして FragmentContainerView を導入し、FrameLayout などの使用を置き換えます。これにより、アニメーションの Z オーダーの問題と、フラグメントにディスパッチするウィンドウ インセットが修正されます。(b/37036000aosp/985243b/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
  • FragmentTransactionFragmentManager.BackStackEntry のパンくずリストタイトル関連の API はサービスが終了しました。(b/138252944
  • FragmentTransactionsetTransitionStyle メソッドのサポートが終了しました。(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 から: 現在のアイテムを削除するときに FragmentPagerAdapterFragmentStatePagerAdapter で発生するクラッシュを修正しました。(b/137209870
  • Fragment は、onDestroyView() をディスパッチする前にアニメーションの終了を待つようになりました。(b/136110528
  • 親 Fragment をアニメーション化するときに、子フラグメントとその子孫からのフラグメント アニメーションが適切に処理されるようになりました。(b/116675313
  • 共有要素の遷移を使用し、ポップ操作と追加操作を組み合わせた場合の NullPointerException を修正しました。(b/120507394
  • Robolectric テストで FragmentPagerAdapterFragmentStatePagerAdapter を使用している場合に発生する IllegalStateException の回避策を追加しました。(b/137201343

バージョン 1.2.0-alpha01

2019 年 7 月 2 日

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

1.0.0 以降の重要な変更

  • fragment-testing: fragment-testing アーティファクトは、フラグメントを単独でテストするための FragmentScenario クラスを提供します。詳細については、アプリのフラグメントをテストするドキュメントをご覧ください。
  • FragmentFactory: FragmentFactoryFragmentManager に設定してフラグメント インスタンスの作成を管理できるようになり、引数のないコンストラクタを持つという厳格な要件がなくなりました。
  • ViewModels 用 Kotlin プロパティ デリゲート: fragment-ktx アーティファクトに、Kotlin プロパティ デリゲートが 2 つ含まれるようになりました。個々のフラグメントに関連付けられた ViewModels にアクセスするための by viewModels() と、特定のアクティビティを対象にして ViewModels にアクセスする by activityViewModels() です。
  • 最大 Lifecycle: FragmentTransactionsetMaxLifecycle() を呼び出すことで、Fragment の最大 Lifecycle 状態を設定できるようになりました。サポート終了となった setUserVisibleHint() の代替です。FragmentPagerAdapterFragmentStatePagerAdapter には新しいコンストラクタがあり、これで新しい動作に切り替えられます。
  • 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-rc04androidx.fragment:fragment-ktx:1.1.0-rc04androidx.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-rc03androidx.fragment:fragment-ktx:1.1.0-rc03androidx.fragment:fragment-testing:1.1.0-rc03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

バグの修正

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

バージョン 1.1.0-rc02

2019 年 7 月 17 日

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

バグの修正

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

バージョン 1.1.0-rc01

2019 年 7 月 2 日

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

バグの修正

  • ネストされた Fragment の androidx.lifecycle.Lifecycle コールバック(特に STARTEDRESUMEDPAUSEDSTOPPEDDESTROYED 関連)が適切にネストされるようになりました。(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-alpha09androidx.fragment:fragment-ktx:1.1.0-alpha09androidx.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-alpha08androidx.fragment:fragment-ktx:1.1.0-alpha08androidx.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
  • 互換性を破る変更: FragmentPagerAdapterFragmentStatePagerAdapterRESUME_ONLY_CURRENT_FRAGMENT 定数と USE_SET_USER_VISIBLE_HINT 定数の名前を、それぞれ BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTBEHAVIOR_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-alpha07androidx.fragment:fragment-ktx:1.1.0-alpha07androidx.fragment:fragment-testing:1.1.0-alpha07 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

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

API の変更

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

動作の変更

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

バグの修正

  • XML で <fragment> タグを使用する際の問題と、FragmentActivity または AppCompatActivitycontentLayoutId コンストラクタを修正しました。(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-alpha06androidx.fragment:fragment-ktx:1.1.0-alpha06androidx.fragment:fragment-testing:1.1.0-alpha06 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

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

API の変更

  • FragmentFragmentActivity に、@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-alpha05androidx.fragment:fragment-ktx:1.1.0-alpha05androidx.fragment:fragment-testing:1.1.0-alpha05 がリリースされました。このバージョンに含まれる commit の完全なリストについては、こちらをご覧ください。

新機能

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

動作の変更

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

バグの修正

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

バージョン 1.1.0-alpha04

2019 年 2 月 7 日

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

新機能

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

API の変更

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

バグの修正

  • nullsetTargetFragment() に渡した場合に、ターゲット フラグメントが正しくクリアされます。(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 または他のカスタム ViewModelStoreOwnerval 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 クラス
  • 任意の FragmentManagerFragmentFactory を設定して、新しいフラグメントのインスタンスのインスタンス化方法を管理できるようになりました。
  • フラグメントから 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 に依存しています。