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
 lombok.ast.AstVisitor createJavaVisitor(com.android.tools.lint.detector.api.JavaContext context)
           
 java.util.List<java.lang.Class<? extends lombok.ast.Node>> getApplicableNodeTypes()
           
 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, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableElements, getApplicableFiles, getApplicableMethodNames, 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, getApplicableMethodNames, 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

getApplicableNodeTypes

@Nullable
public java.util.List<java.lang.Class<? extends lombok.ast.Node>> getApplicableNodeTypes()
Specified by:
getApplicableNodeTypes in interface com.android.tools.lint.detector.api.Detector.JavaScanner
Overrides:
getApplicableNodeTypes in class com.android.tools.lint.detector.api.Detector

createJavaVisitor

@Nullable
public lombok.ast.AstVisitor createJavaVisitor(@NonNull
                                                        com.android.tools.lint.detector.api.JavaContext context)
Specified by:
createJavaVisitor in interface com.android.tools.lint.detector.api.Detector.JavaScanner
Overrides:
createJavaVisitor in class com.android.tools.lint.detector.api.Detector