package Ġcom . gif ft . lint . kotlin Ċ Ċ import Ġcom . android . tools . lint . client . api . U Element Handler Ċ import Ġcom . android . tools . lint . detector . api . Category Ċ import Ġcom . android . tools . lint . detector . api . Context Ċ import Ġcom . android . tools . lint . detector . api . Detector Ċ import Ġcom . android . tools . lint . detector . api . Implementation Ċ import Ġcom . android . tools . lint . detector . api . Issue Ċ import Ġcom . android . tools . lint . detector . api . Java Context Ċ import Ġcom . android . tools . lint . detector . api . Location Ċ import Ġcom . android . tools . lint . detector . api . Scope Ċ import Ġcom . android . tools . lint . detector . api . Severity Ċ import Ġcom . android . tools . lint . detector . api . Source Code Scanner Ċ import Ġorg . jetbrains . kotlin . psi . Kt Annotation Entry Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Literal Expression Ċ import Ġorg . jetbrains . kotlin . psi . Kt Value Argument Ċ import Ġorg . jetbrains . kotlin . psi . psi Util . is Abstract Ċ import Ġorg . jetbrains . u ast . U Annotation Ċ import Ġorg . jetbrains . u ast . U Class Ċ Ċ class ĠMissing Fragment Mult ib ind ing Detector Ġ: ĠDetector (), ĠSource Code Scanner Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFR AG MENT _ KEY Ġ= Ġ" com . gif ft . core . api . di . Fragment Key " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFR AG MENT Ġ= Ġ" android x . fragment . app . Fragment " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDESCRIPTION Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Custom Ġfragments Ġmust Ġbe Ġmulti bound Ġwith Ġa Ġ[$ FRAGMENT _ KEY ] Ġannotation " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX PLAN ATION Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWe Ġuse Ġdagger 2 Ġmult ib ind ing Ġto Ġcreate Ġan Ġall - know ing Ġfragment Ġfactory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhich Ġcan Ġinject Ġdependencies Ġinto Ġfragments ' Ġconstructors . ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ ĠIf Ġreported Ġfragment Ġis Ġnot Ġbound Ġinto Ġa Ġmap Ġof Ġproviders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ[ Mult ib ind ing Fragment Factory ] Ġthen ĠAndroid Ġw ont Ġbe Ġable Ġto Ġcreate Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġthe Ġapp Ġwill Ġbe Ġcr ashed Ġduring Ġfragment Ġinitialization Ġor Ġre creation . ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ ĠTo Ġfix Ġthe Ġissue , Ġplease , Ġcreate Ġa Ġbinding Ġmodule ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Module ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠSub Project Common s Module Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Bind s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Into Map ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Fragment Key ( YOUR Fragment :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠYOUR Fragment . bind YOUR Fragment (): ĠFragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġinclude Ġit Ġinto ĠCommons Component ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Component ( modules Ġ= Ġ[ Sub Project Common s Module :: class ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠCommons Component ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval ĠISS UE Ġ= ĠIssue . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Missing Fragment Mult ib ind ing ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDESCRIPTION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEX PLAN ATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCategory . CORRECT NESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSeverity . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImplementation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMissing Fragment Mult ib ind ing Detector :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScope . JAVA _ FILE _ SCOPE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfragment Declarations Ġ= Ġmutable Map Of < String , ĠLocation >() ĊĠĠĠ Ġprivate Ġval Ġkey ed Fragments Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠ Ġoverride Ġfun Ġapplicable Super Classes () Ġ= ĠlistOf ( FRAGMENT ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Class ( context : ĠJava Context , Ġdeclaration : ĠU Class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( declaration . qualified Name Ġ== ĠFR AG MENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( declaration . source Psi Ġas ĠK t Class ). is Abstract ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġdeclaration . name ĊĠĠĠĠĠĠĠ Ġval Ġextends Fragment Ġ= Ġcontext . evaluator . extends Class ( declaration , ĠFR AG MENT , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( className Ġ!= Ġnull Ġ&& Ġextends Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Declarations [ className ] Ġ= Ġcontext . getName Location ( declaration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUsing ĠU ast Handler Ġfor Ġannotation Ġprocessing Ġbecause ĊĠĠĠ Ġ// Ġvisit Annotation Usage Ġis Ġnot Ġbeing Ġcalled Ġfor Ġan Ġunknown Ġreason ĊĠĠĠ Ġoverride Ġfun Ġget Applicable U ast Types () Ġ= ĠlistOf ( U Annotation :: class . java ) ĊĠĠĠ Ġoverride Ġfun Ġcreate U ast Handler ( context : ĠJava Context ) Ġ= Ġobject Ġ: ĠU Element Handler () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Annotation ( node : ĠU Annotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . qualified Name Ġ== ĠFR AG MENT _ KEY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Argument Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( node . source Psi Ġas ĠK t Annotation Entry ). value Arguments [ 0 ] Ġas ĠK t Value Argument ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Class Reference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( annotation Argument . firstChild Ġas ĠK t Class Literal Expression ). firstChild . text ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey ed Fragments . add ( fragment Class Reference ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter Check Each Project ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . after Check Each Project ( context ) ĊĊĠĠĠĠĠĠĠ Ġfragment Declarations . forEach Ġ{ Ġ( name , Ġlocation ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! keyed Fragments . contains ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . report ( ISSUE , Ġlocation , ĠDESCRIPTION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ