package Ġcom . example . instagram Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . example . instagram . fragments . Compose Fragment Ċ import Ġcom . example . instagram . fragments . Feed Fragment Ċ import Ġcom . example . instagram . fragments . Profile Fragment Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġcom . parse .* Ċ import Ġjava . io . File Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ: ĠFragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ ĠfindViewById < Bottom Navigation View >( R . id . bottom _ navigation ). setOn ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġfragment To Show : ĠFragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ home Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment To Show Ġ= ĠFeed Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Home ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ compose Ġ-> Ġfragment To Show Ġ= ĠCompose Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ profile Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Profile ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment To Show Ġ= ĠProfile Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment To Show Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager . beginTransaction (). replace ( R . id . frame layout , Ġfragment To Show ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġdefault Ġselection ĊĠĠĠĠĠĠĠ ĠfindViewById < Bottom Navigation View >( R . id . bottom _ navigation ). selected ItemId Ġ= ĠR . id . action _ home ĊĊĊĠĠĠĠĠĠĠ Ġ// query Posts () ĊĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġlogout (){ ĊĊĠĠĠĠĠĠĠ Ġgo Login Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgo Login Activity (){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ MainActivity , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġquery Posts (){ ĊĊĠĠĠĠĠĠĠ Ġval Ġquery : ĠParse Query < post > Ġ= ĠParse Query . getQuery ( post :: class . java ) ĊĠĠĠĠĠĠĠ Ġquery . include ( post . KEY _ USER ) ĊĠĠĠĠĠĠĠ Ġquery . find In Background ( object Ġ: ĠFind Callback < post >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdone ( posts : ĠMutable List < post > ?, Ġe : ĠParseException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e != Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" error Ġfetching Ġposts ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( posts != Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġposts ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Post : Ġ"+ Ġpost . getDescription () Ġ+ Ġ" Ġusername : Ġ" Ġ+ Ġpost . getUser ()?. username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Main ĠActivity " ĊĠĠĠĠĠĠĠ Ġval ĠAPP _ TAG Ġ= Ġ" My Custom App " ĊĊĊĠĠĠ Ġ} Ċ }