Skip to content

Commit 2d816a7

Browse files
committed
Merge branch 'develop'
2 parents 34a30bf + b3ef2d1 commit 2d816a7

6 files changed

Lines changed: 58 additions & 39 deletions

File tree

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ https://github.com/frankswu/saf_android_demo
2020
* [Sqlite ORM](https://github.com/fengzhizi715/SAF#sqlite-orm)
2121
* [Router](https://github.com/fengzhizi715/SAF#router)
2222
* [Utils](https://github.com/fengzhizi715/SAF#utils)
23+
* [Plugin](https://github.com/fengzhizi715/SAF#plugin)
2324

2425
SAFApp
2526
===
@@ -498,4 +499,12 @@ Router.getInstance().openFragment("user/fengzhizi715/password/715",new FragmentO
498499

499500
Utils
500501
===
501-
包含了很多常用的工具类,比如日期操作、字符串操作、SAFUtil里包含各种乱七八糟的常用类等等。
502+
包含了很多常用的工具类,比如日期操作、字符串操作、SAFUtil里包含各种乱七八糟的常用类等等。
503+
504+
505+
Plugin
506+
===
507+
[android-saf-plugin-demo](https://github.com/frankswu/android-saf-plugin-demo)
508+
基于SAF框架和androidPluginMgr的plugin实现
509+
510+

lib/dexmaker-1.1.jar

659 KB
Binary file not shown.

lib/dla_main.jar

55.5 KB
Binary file not shown.

lib/pluginmgr-0.1.2.jar

69.8 KB
Binary file not shown.

src/cn/salesuite/saf/inject/Injector.java

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import cn.salesuite.saf.inject.annotation.OnItemClick;
4141
import cn.salesuite.saf.inject.annotation.OnLongClick;
4242
import cn.salesuite.saf.inject.annotation.OnTouch;
43+
import cn.salesuite.saf.utils.StringUtils;
4344

4445
/**
4546
* 可以注入view、resource、systemservice等等<br>
@@ -166,7 +167,15 @@ public Injector(Object object, View v) {
166167
context = v.getContext();
167168
clazz = object.getClass();
168169
activity = null;
169-
extras = null;
170+
if (context != null) {
171+
if (context instanceof Activity) {
172+
extras = ((Activity) context).getIntent().getExtras();
173+
} else {
174+
extras = null;
175+
}
176+
} else {
177+
extras = null;
178+
}
170179
}
171180

172181

@@ -313,43 +322,13 @@ private void injectFields(Finder finder) {
313322
Object service = context.getSystemService(serviceName);
314323
injectIntoField(field, service);
315324
} else if (annotation.annotationType() == InjectExtra.class) {
316-
if (extras != null) {
317-
Object value = extras.get(((InjectExtra) annotation).key());
318-
if (value==null) {
319-
if (field.getType().getName().equals(
320-
java.lang.Integer.class.getName())
321-
|| field.getType().getName().equals("int")) {
322-
value = ((InjectExtra) annotation).defaultInt();
323-
} else if (field.getType().getName().equals(
324-
java.lang.Boolean.class.getName())
325-
|| field.getType().getName().equals("boolean")) {
326-
value = ((InjectExtra) annotation).defaultBoolean();
327-
} else if (field.getType().getName().equals(
328-
java.lang.String.class.getName())) {
329-
value = ((InjectExtra) annotation).defaultString();
330-
}
331-
}
332-
333-
injectIntoField(field, value);
334-
} else {
335-
Object value = null;
336-
if (field.getType().getName().equals(
337-
java.lang.Integer.class.getName())
338-
|| field.getType().getName().equals("int")) {
339-
value = ((InjectExtra) annotation).defaultInt();
340-
} else if (field.getType().getName().equals(
341-
java.lang.Boolean.class.getName())
342-
|| field.getType().getName().equals("boolean")) {
343-
value = ((InjectExtra) annotation).defaultBoolean();
344-
} else if (field.getType().getName().equals(
345-
java.lang.String.class.getName())) {
346-
value = ((InjectExtra) annotation).defaultString();
347-
}
348-
349-
if (value!=null) {
350-
injectIntoField(field, value);
351-
}
325+
String extraKey = ((InjectExtra) annotation).key();
326+
// key 没有使用
327+
if (StringUtils.isBlank(extraKey)) {
328+
extraKey = field.getName();
352329
}
330+
setInjectExtra(field,extras,extraKey,annotation);
331+
353332
} else if (annotation.annotationType() == InjectSupportFragment.class) {
354333
int id = ((InjectSupportFragment) annotation).id();
355334
Fragment fragment = findSupportFragment(field, id);
@@ -358,6 +337,32 @@ private void injectFields(Finder finder) {
358337
}
359338
}
360339
}
340+
341+
private void setInjectExtra(Field field, Bundle extras, String extraKey,Annotation annotation) {
342+
343+
Object value = extras != null ? extras.get(extraKey) : null;
344+
if (value==null) {
345+
if (field.getType().getName().equals(java.lang.Integer.class.getName())
346+
|| field.getType().getName().equals("int")) {
347+
value = ((InjectExtra) annotation).defaultInt();
348+
} else if (field.getType().getName().equals(java.lang.Boolean.class.getName())
349+
|| field.getType().getName().equals("boolean")) {
350+
value = ((InjectExtra) annotation).defaultBoolean();
351+
} else if (field.getType().getName().equals(java.lang.String.class.getName())) {
352+
value = ((InjectExtra) annotation).defaultString();
353+
} else if (field.getType().getName().equals(java.lang.Long.class.getName())
354+
|| field.getType().getName().equals("long")) {
355+
value = ((InjectExtra) annotation).defaultLong();
356+
} else if (field.getType().getName().equals(java.lang.Double.class.getName())
357+
|| field.getType().getName().equals("double")) {
358+
value = ((InjectExtra) annotation).defaultDouble();
359+
}
360+
}
361+
362+
if (value != null) {
363+
injectIntoField(field, value);
364+
}
365+
}
361366

362367
/**
363368
* 查找fragment

src/cn/salesuite/saf/inject/annotation/InjectExtra.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,16 @@
2323
@Target(ElementType.FIELD)
2424
public @interface InjectExtra {
2525

26-
String key();
26+
String key() default "";
2727

2828
int defaultInt() default 0;
2929

3030
boolean defaultBoolean() default false;
3131

3232
String defaultString() default "";
33+
34+
double defaultDouble() default 0.0;
35+
36+
long defaultLong() default 0L;
37+
3338
}

0 commit comments

Comments
 (0)