Fragment

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

依存関係の宣言

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

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

dependencies {
    def fragment_version = "1.2.5"

    // 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.3.0

バージョン 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 に含まれるコミットについては、こちらをご覧ください

新機能

  • 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 に含まれるコミットについては、こちらをご覧ください

新機能

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 に含まれるコミットについては、こちらをご覧ください

新機能

  • 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 に含まれるコミットについては、こちらをご覧ください

API の変更

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

バグの修正

  • BottomSheetDialogFragment の使用時に フラグメント 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 に含まれるコミットについては、こちらをご覧ください

新機能

  • 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 に含まれるコミットについては、こちらをご覧ください

新機能

  • 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • フラグメントのライフサイクルの動作が反映され、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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 保持されたフラグメントの難読化を許可するように 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 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 に含まれるコミットについては、こちらをご覧ください

新しい 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 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 に含まれるコミットについては、こちらをご覧ください

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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • アクティビティを破棄する際に 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 表示の問題を回避するために、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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 終了アニメーション / 遷移の実行中に、削除された 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • 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 に含まれるコミットについては、こちらをご覧ください

新機能

  • 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 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • フラグメントの 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 に含まれるコミットについては、こちらをご覧ください

新機能

  • 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 に含まれるコミットについては、こちらをご覧ください

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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • 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 を使用して、追加するフラグメントのインスタンスを作成します。具体化された型を使用する 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • タイムアウトを複数回設定して 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • 現在のアイテムを削除するときに 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • 遷移の実行中に 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • ネストされた 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

このリリースは、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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • 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 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • 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 がリリースされました。このバージョンに含まれるコミットの完全なリストについては、こちらをご覧ください。

新機能

  • @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 に依存しています。