com.android.tools.lint.checks
Class FragmentDetector

java.lang.Object
  extended by com.android.tools.lint.detector.api.Detector
      extended by com.android.tools.lint.checks.FragmentDetector
All Implemented Interfaces:
com.android.tools.lint.detector.api.Detector.JavaScanner

public class FragmentDetector
extends com.android.tools.lint.detector.api.Detector
implements com.android.tools.lint.detector.api.Detector.JavaScanner

Checks that Fragment subclasses can be instantiated via {link Class.newInstance()}: the class is public, static, and has a public null constructor.

This helps track down issues like http://stackoverflow.com/questions/8058809/fragment-activity-crashes-on-screen-rotate (and countless duplicates)


Nested Class Summary
 
Nested classes/interfaces inherited from class com.android.tools.lint.detector.api.Detector
com.android.tools.lint.detector.api.Detector.BinaryResourceScanner, com.android.tools.lint.detector.api.Detector.ClassScanner, com.android.tools.lint.detector.api.Detector.GradleScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.OtherFileScanner, com.android.tools.lint.detector.api.Detector.ResourceFolderScanner, com.android.tools.lint.detector.api.Detector.XmlScanner
 
Field Summary
static com.android.tools.lint.detector.api.Issue ISSUE
          Are fragment subclasses instantiatable?
 
Constructor Summary
FragmentDetector()
          Constructs a new FragmentDetector
 
Method Summary
 java.util.List<java.lang.String> applicableSuperClasses()
           
 void checkClass(com.android.tools.lint.detector.api.JavaContext context, lombok.ast.ClassDeclaration node, com.android.tools.lint.client.api.JavaParser.ResolvedClass cls)
           
 com.android.tools.lint.detector.api.Speed getSpeed()
           
 
Methods inherited from class com.android.tools.lint.detector.api.Detector
afterCheckFile, afterCheckLibraryProject, afterCheckProject, appliesTo, appliesTo, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkBinaryResource, checkCall, checkClass, checkFolder, checkInstruction, createJavaVisitor, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableElements, getApplicableFiles, getApplicableMethodNames, getApplicableNodeTypes, getSpeed, run, visitAttribute, visitBuildScript, visitDocument, visitElement, visitElementAfter, visitMethod, visitResourceReference
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.android.tools.lint.detector.api.Detector.JavaScanner
appliesToResourceRefs, createJavaVisitor, getApplicableMethodNames, getApplicableNodeTypes, visitMethod, visitResourceReference
 

Field Detail

ISSUE

public static final com.android.tools.lint.detector.api.Issue ISSUE
Are fragment subclasses instantiatable?

Constructor Detail

FragmentDetector

public FragmentDetector()
Constructs a new FragmentDetector

Method Detail

getSpeed

@NonNull
public com.android.tools.lint.detector.api.Speed getSpeed()
Overrides:
getSpeed in class com.android.tools.lint.detector.api.Detector

applicableSuperClasses

@Nullable
public java.util.List<java.lang.String> applicableSuperClasses()
Specified by:
applicableSuperClasses in interface com.android.tools.lint.detector.api.Detector.JavaScanner
Overrides:
applicableSuperClasses in class com.android.tools.lint.detector.api.Detector

checkClass

public void checkClass(@NonNull
                       com.android.tools.lint.detector.api.JavaContext context,
                       @NonNull
                       lombok.ast.ClassDeclaration node,
                       @NonNull
                       com.android.tools.lint.client.api.JavaParser.ResolvedClass cls)
Specified by:
checkClass in interface com.android.tools.lint.detector.api.Detector.JavaScanner
Overrides:
checkClass in class com.android.tools.lint.detector.api.Detector