package Ġcom . n cap dev i . frag nav Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġcom . n cap dev i . frag nav . tab history .* Ċ import Ġcom . n cap dev i . frag nav . tab history . Frag Nav Tab History Controller . Companion . UNIQUE _ TAB _ HISTORY Ċ import Ġcom . n cap dev i . frag nav . tab history . Frag Nav Tab History Controller . Companion . UN LIMIT ED _ TAB _ HISTORY Ċ Ċ class ĠBuilder ( private Ġval ĠsavedInstanceState : ĠBundle ?, Ġval Ġfragment Manager : ĠFragment Manager , Ġval Ġcontainer Id : ĠInt ) Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġroot Fragment Listener : ĠF rag Nav Controller . Root Fragment Listener ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġtransaction Listener : ĠF rag Nav Controller . Transaction Listener ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġdefault Transaction Options : ĠF rag Nav Transaction Options ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar ĠnumberOf Tabs Ġ= Ġ 0 ĊĠĠĠ Ġinternal Ġvar Ġroot Fragments : ĠList < Fragment >? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Frag Nav Controller . TabIndex ĊĠĠĠ Ġinternal Ġvar Ġselected TabIndex Ġ= ĠF rag Nav Controller . TAB 1 ĊĊĠĠĠ Ġ@ Frag Nav Controller . Fragment Hide Strategy ĊĠĠĠ Ġinternal Ġvar Ġfragment Hide Strategy Ġ= ĠF rag Nav Controller . DET ACH ĊĊĠĠĠ Ġinternal Ġvar Ġcreate E ager Ġ= Ġfalse ĊĊĠĠĠ Ġinternal Ġvar Ġnavigation Strategy : ĠNavigation Strategy Ġ= ĠCurrent Tab Strategy () ĊĊĠĠĠ Ġinternal Ġvar Ġfrag Nav Logger : ĠF rag Nav Logger ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġselected TabIndex ĠThe Ġinitial Ġtab Ġindex Ġto Ġbe Ġused Ġmust Ġbe Ġin Ġrange Ġof Ġroot Fragments Ġsize ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselected TabIndex (@ Frag Nav Controller . TabIndex Ġselected TabIndex : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . selected TabIndex Ġ= Ġselected TabIndex ĊĠĠĠĠĠĠĠ Ġif Ġ( selected TabIndex Ġ> ĠnumberOf Tabs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException (" Starting Ġindex Ġcannot Ġbe Ġlarger Ġthan Ġthe Ġnumber Ġof Ġstacks ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġroot Fragment ĠA Ġsingle Ġroot Ġfragment . ĠThis Ġlibrary Ġcan Ġstill Ġbe Ġhelpful Ġwhen Ġmanaging Ġa Ġsingle Ġstack Ġof Ġfragments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġroot Fragment ( root Fragment : ĠFragment ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroot Fragments ( listOf ( root Fragment )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġroot Fragments Ġa Ġlist Ġof Ġroot Ġfragments . Ġroot ĠF rag ments Ġare Ġthe Ġroot Ġfragments Ġthat Ġexist Ġon Ġany Ġtab Ġstructure . ĠIf Ġonly Ġone Ġfragment Ġis Ġsent Ġin , Ġfrag nav Ġwill Ġstill Ġmanage ĊĠĠĠĠ Ġ* Ġtransactions ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġroot Fragments ( root Fragments : ĠList < Fragment >): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root Fragment Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Root Ġfragments Ġand Ġroot Ġfragment Ġlistener Ġcan Ġnot Ġbe Ġset Ġthe Ġsame Ġtime ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . root Fragments Ġ= Ġroot Fragments ĊĠĠĠĠĠĠĠ ĠnumberOf Tabs Ġ= Ġroot Fragments . size ĊĠĠĠĠĠĠĠ Ġif Ġ( numberOf Tabs Ġ> ĠF rag Nav Controller . MAX _ NUM _ TAB S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Number Ġof Ġroot Ġfragments Ġcannot Ġbe Ġgreater Ġthan Ġ" Ġ+ ĠF rag Nav Controller . MAX _ NUM _ TAB S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġtransaction Options ĠThe Ġdefault Ġtransaction Ġoptions Ġto Ġbe Ġused Ġunless Ġotherwise Ġdefined . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdefault Transaction Options ( transaction Options : ĠF rag Nav Transaction Options ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Transaction Options Ġ= Ġtransaction Options ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġroot Fragment Listener Ġa Ġlistener Ġthat Ġallows Ġfor Ġdynamically Ġcreating Ġroot Ġfragments ĊĠĠĠĠ Ġ* Ġ@ param ĠnumberOf Tabs ĠĠĠĠĠĠĠĠ Ġthe Ġnumber Ġof Ġtabs Ġthat Ġwill Ġbe Ġswitched Ġbetween ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġroot Fragment Listener ( root Fragment Listener : ĠF rag Nav Controller . Root Fragment Listener , ĠnumberOf Tabs : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root Fragments Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Root Ġfragment Ġlistener Ġand Ġroot Ġfragments Ġcan Ġnot Ġbe Ġset Ġthe Ġsame Ġtime ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . root Fragment Listener Ġ= Ġroot Fragment Listener ĊĠĠĠĠĠĠĠ Ġthis . numberOf Tabs Ġ= ĠnumberOf Tabs ĊĠĠĠĠĠĠĠ Ġif Ġ( this . numberOf Tabs Ġ> ĠF rag Nav Controller . MAX _ NUM _ TAB S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Number Ġof Ġtabs Ġcannot Ġbe Ġgreater Ġthan Ġ" Ġ+ ĠF rag Nav Controller . MAX _ NUM _ TAB S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġtransaction Listener ĠA Ġlistener Ġto Ġbe Ġimplemented Ġ( typ ically Ġwithin Ġthe Ġmain Ġactivity ) Ġto Ġfragment Ġtransactions Ġ( including Ġtab Ġswitches ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransaction Listener ( transaction Listener : ĠF rag Nav Controller . Transaction Listener ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . transaction Listener Ġ= Ġtransaction Listener ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġpop Strategy ĠSwitch Ġbetween Ġdifferent Ġapproaches Ġof Ġhandling Ġtab Ġhistory Ġwhile Ġpop ping Ġfragments Ġon Ġcurrent Ġtab ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated ( ĊĠĠĠĠĠĠĠ Ġ" UNIQUE _ TAB _ HISTORY Ġand ĠUN LIMIT ED _ TAB _ HISTORY Ġrequire ĠF rag Nav Switch Controller ", ĊĠĠĠĠĠĠĠ ĠReplace With (" switch Controller ( pop Strategy , Ġfrag Nav Switch Controller )") ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġpop Strategy (@ Frag Nav Tab History Controller . Pop Strategy Ġpop Strategy : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pop Strategy Ġ!= ĠF rag Nav Tab History Controller . UNIQUE _ TAB _ HISTORY Ġ|| Ġpop Strategy Ġ!= ĠF rag Nav Tab History Controller . UN LIMIT ED _ TAB _ HISTORY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" UNIQUE _ TAB _ HISTORY Ġand ĠUN LIMIT ED _ TAB _ HISTORY Ġrequire ĠF rag Nav Switch Controller , Ġplease Ġuse Ġ` switch Controller ` Ġinstead Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . navigation Strategy Ġ= ĠCurrent Tab Strategy () ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Hide Strategy ĠSwitch Ġbetween Ġdifferent Ġapproaches Ġof Ġhiding Ġinactive Ġand Ġshowing Ġactive Ġfragments ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfragment Hide Strategy (@ Frag Nav Controller . Fragment Hide Strategy Ġfragment Hide Strategy : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . fragment Hide Strategy Ġ= Ġfragment Hide Strategy ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġcreate E ager ĠShould Ġinitially Ġcreate Ġall Ġtab 's Ġtop most Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġeager ( create E ager : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . create E ager Ġ= Ġcreate E ager ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġfrag Nav Switch Controller ĠHandles Ġswitch Ġrequests ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġswitch Controller (@ Frag Nav Tab History Controller . Pop Strategy Ġpop Strategy : ĠInt , Ġfrag Nav Switch Controller : ĠF rag Nav Switch Controller ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . navigation Strategy Ġ= Ġwhen Ġ( pop Strategy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUNIQUE _ TAB _ HISTORY Ġ-> ĠUnique Tab History Strategy ( frag Nav Switch Controller ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUN LIMIT ED _ TAB _ HISTORY Ġ-> ĠUn limited Tab History Strategy ( frag Nav Switch Controller ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCurrent Tab Strategy () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġfrag Nav Logger ĠReports Ġerrors Ġfor Ġthe Ġclient ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlogger ( frag Nav Logger : ĠF rag Nav Logger ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . frag Nav Logger Ġ= Ġfrag Nav Logger ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild (): ĠF rag Nav Controller Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root Fragment Listener Ġ== Ġnull Ġ&& Ġroot Fragments Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException (" Either Ġa Ġroot Ġfragment ( s ) Ġneeds Ġto Ġbe Ġset , Ġor Ġa Ġfragment Ġlistener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠF rag Nav Controller ( this , ĠsavedInstanceState ) ĊĠĠĠ Ġ} Ċ }