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.ClassScanner

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

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.ClassScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.OtherFileScanner, 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
 void checkClass(com.android.tools.lint.detector.api.ClassContext context, org.objectweb.asm.tree.ClassNode classNode)
           
 com.android.tools.lint.detector.api.Speed getSpeed()
           
 
Methods inherited from class com.android.tools.lint.detector.api.Detector
afterCheckFile, afterCheckLibraryProject, afterCheckProject, appliesTo, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkCall, checkInstruction, createJavaVisitor, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableElements, getApplicableFiles, getApplicableMethodNames, getApplicableNodeTypes, run, visitAttribute, 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.ClassScanner
checkCall, checkInstruction, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwners
 

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

checkClass

public void checkClass(@NonNull
                       com.android.tools.lint.detector.api.ClassContext context,
                       @NonNull
                       org.objectweb.asm.tree.ClassNode classNode)
Specified by:
checkClass in interface com.android.tools.lint.detector.api.Detector.ClassScanner
Overrides:
checkClass in class com.android.tools.lint.detector.api.Detector