/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġandroidx . fragment . app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . test . Fragment Test Activity Ċ import Ġandroidx . fragment . test . R Ċ import Ġandroidx . test . core . app . Activity Scenario Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġandroidx . test . filters . Large Test Ċ import Ġandroidx . test utils . with Activity Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ Ċ /** Ċ Ġ* ĠTest Ġto Ġprevent Ġre gress ions Ġin ĠSupport FragmentManager Ġfragment Ġreplace Ġmethod . Ċ Ġ*/ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ @ Large Test Ċ class ĠFragment Replace Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Replace Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( Activity Scenario . launch ( Fragment Test Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġwith Activity Ġ{ Ġsupport FragmentManager Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . content , ĠStrict View Fragment ( R . layout . fragment _ a )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text A )). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text B )). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text C )). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . content , ĠStrict View Fragment ( R . layout . fragment _ b )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text A )). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text B )). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text C )). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content , ĠStrict View Fragment ( R . layout . fragment _ c )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text A )). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text B )). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text C )). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Replace Fragment In On Create () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( Activity Scenario . launch ( Replace In Create Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreplace In Create Fragment Ġ= Ġwith Activity Ġ{ Ġthis . replace In Create Fragment Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( replace In Create Fragment . is Added ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isFalse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Activity Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text A )). isNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( findViewById < View >( R . id . text B )). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠReplace In Create Activity Ġ: ĠFragment Activity ( R . layout . activity _ content ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġparent Fragment : ĠParent Fragment ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . content ) Ġas ĠParent Fragment ĊĠĠĠ Ġval Ġreplace In Create Fragment : ĠReplace In Create Fragment ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġparent Fragment . replace In Create Fragment ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġissue Ġonly Ġappears Ġfor Ġchild Ġfragments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġso Ġadd Ġparent Ġfragment Ġthat Ġcontains Ġthe ĠReplace In Create Fragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . content , ĠParent Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Re ordering Allowed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠParent Fragment Ġ: ĠStrict View Fragment ( R . layout . simple _ container ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġreplace In Create Fragment : ĠReplace In Create Fragment ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace In Create Fragment Ġ= ĠReplace In Create Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . fragment Container , Ġreplace In Create Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Re ordering Allowed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠReplace In Create Fragment Ġ: ĠStrict View Fragment ( R . layout . fragment _ a ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġparent FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment Container , ĠStrict View Fragment ( R . layout . fragment _ b )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Re ordering Allowed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} Ċ } Ċ