package Ġcom . example . android . polit ical prepared ness . election Ċ Ċ import Ġandroid . content . Activity NotFoundException Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . example . android . polit ical prepared ness . Polit ical Prepared ness App Ċ import Ġcom . example . android . polit ical prepared ness . R Ċ import Ġcom . example . android . polit ical prepared ness . databinding . Fragment V oter Info Binding Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠV oter Info Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < V oter Info ViewModel > Ġ{ ĊĠĠĠĠĠĠĠ ĠV oter Info ViewModel Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( require Context (). application Context Ġas ĠPol it ical Prepared ness App ). election s Repository ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment V oter Info Binding . inflate ( in flater ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ Ġargs Bundle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelection Id Ġ= ĠV oter Info Fragment Args . from Bundle ( args Bundle ). arg E lection Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdivision Ġ= ĠV oter Info Fragment Args . from Bundle ( args Bundle ). arg Division ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load V oter Info ( election Id , Ġdivision ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġhandle Ġloading Ġof ĠURLs ĊĠĠĠĠĠĠĠ ĠviewModel . open Url In Browser Event . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġuri Ġ-> Ġopen Url In Browser ( uri ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . errorMessage . observe ( view Lifecycle Owner , Ġ{ Ġres Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( require View (), Ġres Id , ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġmethod Ġto Ġload ĠURL Ġintent s ĊĠĠĠ Ġprivate Ġfun Ġopen Url In Browser ( uri : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠActivity NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Unable Ġto Ġopen Ġlink : Ġ$ uri \ n $ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . errorMessage . post Value ( R . string . error _ open _ link ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ