package Ġkr . ac . sn u . hc il . om n itr ack . ui . pages . auth Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . Javascript Interface Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġcom . google . gson . JsonObject Ċ import Ġkotlinx . android . synt hetic . main . slide _ demo graphic . view .* Ċ import Ġkr . ac . sn u . hc il . om n itr ack . OT Android App Ċ import Ġkr . ac . sn u . hc il . om n itr ack . R Ċ import Ġkr . ac . sn u . hc il . om n itr ack . core . serialization . getString Compat Ċ Ċ class ĠDemo graphic Questionnaire Slide Fragment Ġ: ĠSign Up Activity . Slide Fragment ( SignUp Activity . ES lide . DEMO GRAPH IC _ QUEST ION NA I RE ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠINITIAL IZE _ URL Ġ= Ġ" file :/// android _ asset / web / question naire / index . html " ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( schema : ĠString ): ĠDemo graphic Questionnaire Slide Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDemo graphic Questionnaire Slide Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= Ġbundle Of (" question naire Schema " Ġto Ġschema ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġclient Ġ= ĠQuestion naire WebView Client () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġschema String : ĠString ĊĊĠĠĠ Ġprivate Ġvar ĠwebView : ĠWebView ? Ġ= Ġnull ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Set JavaScript Enabled ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . slide _ demo graphic , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval ĠwebView Ġ= Ġview . ui _ webview ĊĠĠĠĠĠĠĠ Ġthis . web View Ġ= ĠwebView ĊĊĠĠĠĠĠĠĠ ĠwebView . settings . java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . java Script Can Open Windows Autom atically Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . settings . set Support Zoom ( false ) ĊĠĠĠĠĠĠĠ ĠwebView . settings . allow File Access Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . is Vertical F ading Edge Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . is Vertical ScrollBar Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠwebView . is Horizontal ScrollBar Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠwebView . add Javascript Interface ( this , Ġ" External Handler ") ĊĠĠĠĠĠĠĠ ĠwebView . web View Client Ġ= Ġclient ĊĠĠĠĠĠĠĠ ĠwebView . load Url ( INITIAL IZE _ URL ) ĊĊĠĠĠĠĠĠĠ Ġarguments ?. getString (" question naire Schema ") ?. let Ġ{ Ġschema String Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . schema String Ġ= Ġschema String ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Javascript Interface ĊĠĠĠ Ġfun ĠonSubmit ted ( serialized Error : ĠString ?, Ġserialized Values : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" serialized Error : Ġ$ serialized Error ") ĊĠĠĠĠĠĠĠ Ġprintln (" serialized Values : Ġ$ serialized Values ") ĊĠĠĠĠĠĠĠ Ġif Ġ( serialized Error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Obj Ġ= Ġ( require Context (). application Context Ġas ĠO T Android App ). application Component . generic Gson (). fromJson ( serialized Error , ĠJsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Obj . getString Compat (" error ") Ġ== Ġ" Required Fields ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Fill Ġup Ġall Ġthe Ġrequired Ġquestions .", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Obj Ġ= Ġ( require Context (). application Context Ġas ĠO T Android App ). application Component . generic Gson (). fromJson ( serialized Values , ĠJsonObject :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . demo graphic Answers Ġ= Ġvalue Obj ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . go Next ( slide ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Next Tri ed () Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView ?. evaluate Javascript (" submit () ") Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠQuestion naire WebView Client Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url ?. startsWith ( INITIAL IZE _ URL ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. evaluate Javascript (" init ($ schema String )") Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" init Result :") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }