Skip to content

Commit e706f0e

Browse files
committed
Merge pull request yangfuhai#63 from remex2008/master
修复FinalActivity,增加最新版jar
2 parents 654f7a2 + cfad78c commit e706f0e

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

bin/afinal_0.5.1_bin.jar

153 KB
Binary file not shown.

src/net/tsz/afinal/FinalActivity.java

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,45 +31,51 @@ public abstract class FinalActivity extends Activity {
3131

3232
public void setContentView(int layoutResID) {
3333
super.setContentView(layoutResID);
34-
initView();
34+
initInjectedView(this);
3535
}
3636

3737

3838
public void setContentView(View view, LayoutParams params) {
3939
super.setContentView(view, params);
40-
initView();
40+
initInjectedView(this);
4141
}
4242

4343

4444
public void setContentView(View view) {
4545
super.setContentView(view);
46-
initView();
46+
initInjectedView(this);
4747
}
48+
4849

49-
private void initView(){
50-
Field[] fields = getClass().getDeclaredFields();
50+
public static void initInjectedView(Activity activity){
51+
initInjectedView(activity, activity.getWindow().getDecorView());
52+
}
53+
54+
55+
public static void initInjectedView(Object injectedSource,View sourceView){
56+
Field[] fields = injectedSource.getClass().getDeclaredFields();
5157
if(fields!=null && fields.length>0){
5258
for(Field field : fields){
5359
try {
5460
field.setAccessible(true);
5561

56-
if(field.get(this)!= null )
62+
if(field.get(injectedSource)!= null )
5763
continue;
5864

5965
ViewInject viewInject = field.getAnnotation(ViewInject.class);
6066
if(viewInject!=null){
6167

6268
int viewId = viewInject.id();
63-
field.set(this,findViewById(viewId));
69+
field.set(injectedSource,sourceView.findViewById(viewId));
6470

65-
setListener(field,viewInject.click(),Method.Click);
66-
setListener(field,viewInject.longClick(),Method.LongClick);
67-
setListener(field,viewInject.itemClick(),Method.ItemClick);
68-
setListener(field,viewInject.itemLongClick(),Method.itemLongClick);
71+
setListener(injectedSource,field,viewInject.click(),Method.Click);
72+
setListener(injectedSource,field,viewInject.longClick(),Method.LongClick);
73+
setListener(injectedSource,field,viewInject.itemClick(),Method.ItemClick);
74+
setListener(injectedSource,field,viewInject.itemLongClick(),Method.itemLongClick);
6975

7076
Select select = viewInject.select();
7177
if(!TextUtils.isEmpty(select.selected())){
72-
setViewSelectListener(field,select.selected(),select.noSelected());
78+
setViewSelectListener(injectedSource,field,select.selected(),select.noSelected());
7379
}
7480

7581
}
@@ -81,40 +87,39 @@ private void initView(){
8187
}
8288

8389

84-
85-
private void setViewSelectListener(Field field,String select,String noSelect)throws Exception{
86-
Object obj = field.get(this);
90+
private static void setViewSelectListener(Object injectedSource,Field field,String select,String noSelect)throws Exception{
91+
Object obj = field.get(injectedSource);
8792
if(obj instanceof View){
88-
((AbsListView)obj).setOnItemSelectedListener(new EventListener(this).select(select).noSelect(noSelect));
93+
((AbsListView)obj).setOnItemSelectedListener(new EventListener(injectedSource).select(select).noSelect(noSelect));
8994
}
9095
}
9196

9297

93-
private void setListener(Field field,String methodName,Method method)throws Exception{
98+
private static void setListener(Object injectedSource,Field field,String methodName,Method method)throws Exception{
9499
if(methodName == null || methodName.trim().length() == 0)
95100
return;
96101

97-
Object obj = field.get(this);
102+
Object obj = field.get(injectedSource);
98103

99104
switch (method) {
100105
case Click:
101106
if(obj instanceof View){
102-
((View)obj).setOnClickListener(new EventListener(this).click(methodName));
107+
((View)obj).setOnClickListener(new EventListener(injectedSource).click(methodName));
103108
}
104109
break;
105110
case ItemClick:
106111
if(obj instanceof AbsListView){
107-
((AbsListView)obj).setOnItemClickListener(new EventListener(this).itemClick(methodName));
112+
((AbsListView)obj).setOnItemClickListener(new EventListener(injectedSource).itemClick(methodName));
108113
}
109114
break;
110115
case LongClick:
111116
if(obj instanceof View){
112-
((View)obj).setOnLongClickListener(new EventListener(this).longClick(methodName));
117+
((View)obj).setOnLongClickListener(new EventListener(injectedSource).longClick(methodName));
113118
}
114119
break;
115120
case itemLongClick:
116121
if(obj instanceof AbsListView){
117-
((AbsListView)obj).setOnItemLongClickListener(new EventListener(this).itemLongClick(methodName));
122+
((AbsListView)obj).setOnItemLongClickListener(new EventListener(injectedSource).itemLongClick(methodName));
118123
}
119124
break;
120125
default:

0 commit comments

Comments
 (0)