down aptlib for you
publicclassWriteAutoFragmentextendsWriteAutoParentFragment {
@AutoBundleintage;
@AutoBundleList<Point> pointList;
@AutoBundlebooleankeyBoolean;
@AutoBundleStringkeyString;
publicstaticWriteAutoFragmentnewInstance(intage) {
Log.d("WriteAutoFragment","newInstance");
Bundleargs = newBundle();
WriteAutoFragmentfragment = newWriteAutoFragment();
Pointpoint = newPoint(100, 50);
ArrayList<Point> objects = newArrayList<>();
objects.add(point);
fragment.autoBundleInjector.handleEncode(args)
.age(age)
.pointList(objects)
.keyBoolean(true)
.keyString("string~")
.save();
fragment.setArguments(args);
returnfragment;
}
@OverridepublicvoidonAttach(Contextcontext) {
super.onAttach(context);
Log.d("WriteAutoFragment","onAttach");
autoBundleInjector.decode(getArguments())
.resolve();
}
@OverridepublicvoidonViewStateRestored(@NullableBundlesavedInstanceState) {
super.onViewStateRestored(savedInstanceState);
Log.d("WriteAutoFragment","onViewStateRestored");
autoBundleInjector.decode(savedInstanceState)
.resolve();
}
@OverridepublicvoidonSaveInstanceState(@NonNullBundleoutState) {
super.onSaveInstanceState(outState);
Log.d("WriteAutoFragment","onSaveInstanceState");
autoBundleInjector.autoEncode(outState)
.save();
}
}@AutoService(Processor::class)
classViewInjectProcessor : AbstractProcessorAPT() {
companionobject {
internalvalSUFFIX = ElementResolver.GENERATE_LABEL + "Injector"init {
LogConfig.setFileAddress("/Users/nutstore/AndroidStudioProjects/AnnotationStudy/apt/src/main/java/com/zone/process.txt")
}
}
overridefungetSupportedAnnotationClasses(): Array<Class<outAnnotation>> =
arrayOf(ZField::class.java, ZMethod::class.java, ZClass::class.java)
overridefunprocess(annotations: Set<TypeElement>, env: RoundEnvironment): Boolean {
mElementResolver.messager.printMessage(Diagnostic.Kind.WARNING, "写入成功 :")
//解析成实体类for (supportinsupportedAnnotationClasses) {
mElementResolver.resolve(env, support)
}
//文件写入for ((_, value) inmElementResolver.classEntityMap) {
try {
value.aptClassName = value.classSimpleName.toString() + SUFFIXJavaFileUtils.write(mElementResolver, value) { JavaGenerate.brewJava(value) }
} catch (e: Exception) {
mElementResolver.messager.printMessage(Diagnostic.Kind.ERROR, e.message)
}
}
//log打印;mElementResolver.printLog()
returntrue
}
}http://www.race604.com/annotation-processing/