package Ġrt . nn c . modules Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠLogin Handler , ĠToolbar Handler Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIS _ LOG GED _ IN Ġ= Ġ" is LoggedIn " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtoolbar Ġby Ġlazy Ġ{ ĠfindViewById < Toolbar >( R . id . toolbar ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnav Controller Ġby Ġlazy Ġ{ Ġfind Nav Controller ( R . id . nav _ host _ fragment ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġtoolbar . setup With Nav Controller ( nav Controller , ĠApp Bar Configuration ( nav Controller . graph )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġfor Ġsupporting Ġdynamic Ġtoolbar Ġtitle 's Ġsince Ġit 's Ġnot Ġcurrently Ġsupported ĊĠĠĠĠ Ġ* Ġhttps :// issue tracker . google . com / issues / 8 0 2 6 7 2 6 6 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Toolbar Title ( title : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġprefs . edit (). put Boolean ( IS _ LOG GED _ IN , Ġtrue ). apply () ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠChanging Ġnav Ġgraphs Ġis Ġcurrently Ġbroken . Ġhttps :// issue tracker . google . com / issues / 1 1 1 4 5 0 6 7 2 ĊĠĠĠĠĠĠĠ Ġ// refresh Nav Graph () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġprefs . edit (). remove ( IS _ LOG GED _ IN ). apply () ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠChanging Ġnav Ġgraphs Ġis Ġcurrently Ġbroken . Ġhttps :// issue tracker . google . com / issues / 1 1 1 4 5 0 6 7 2 ĊĠĠĠĠĠĠĠ Ġ// Ġrefresh Nav Graph () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO ĠDon 't Ġuse Ġthis . ĠChanging Ġgraphs Ġis Ġcurrently Ġbroken . Ġhttps :// issue tracker . google . com / issues / 1 1 1 4 5 0 6 7 2 ĊĠĠĠ Ġprivate Ġfun Ġrefresh Nav Graph () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is LoggedIn ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsetup Ġregular Ġnav Ġgraph ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . set Graph ( R . navigation . nav _ graph ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( nav Controller . graph . start Destination ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsetup Ġlogin Ġgraph ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . set Graph ( R . navigation . login _ nav _ graph ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( nav Controller . graph . start Destination ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis LoggedIn (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . getBoolean ( IS _ LOG GED _ IN , Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ