Android开发中Java回调机制的应用
上一篇 / 下一篇 2012-09-05 09:49:29 / 个人分类:Java
用Java写了这么久的程序,一直没有理解什么是回调,在最近的Android开发工作中,一个偶然的需求让我突然就对Java中的回调有了一个理解,遂记录之。51Testing软件测试网 a%T T]l`B2P*V} Z
51Testing软件测试网#F5i;^p;o,wPa0?^首先这个需求是这样的,一个Activity中的有一个View,我需要在不同的触发条件下更换这个View的Layout,我们很容易想到写一个方 法,把要更换成的Layout的id传进去,然后为这个View设置一下content。就可以在不同的条件下调用这个函数来设置View的layout 了,这不难理解。51Testing软件测试网Vdx{Q u!q7? b
*J*fY.iI6}ky0 但是,假设,现在该View的Layout更换成了LayoutA,LayoutA里面有一个ImageView,我 要对该ImageView通过代码设置一些属性;然后,另一时刻,该View的Layout换成了LayoutB,LayoutB里面有一个 Button,我要对该Button通过代码做一些设置,怎么办?
tEI6G!KYW\D~8ym051Testing软件测试网BNuz1c2k.Y我们可以这样解决:51Testing软件测试网9V(V@1h'O#|
~_!ym
^0class MyActivity extends Activity {
,WC*z SXti"b0 View view;51Testing软件测试网#}5q1{!z\ F&y
int currentContentFlag;51Testing软件测试网|1P^}{Dc
CpI,|3r"Dq,W)xc0 private static final int ViewA = 1; // 标志着当前View显示的内容是ViewA
5PDen3ESu `:S0 private static final int ViewB = 2; // 标志着当前View显示的内容是ViewB
/lGX$l$LPL|0 /**51Testing软件测试网9a.{p9~5T
* 3.最后看这个函数
]~]Cwy0 */51Testing软件测试网~u8eG+m4G!W,u
@Override51Testing软件测试网o!WB.ssMu3Q
public void onCreate(Bundle savedInstanceState) {51Testing软件测试网*cy [6\ UPQ
super.onCreate(savedInstanceState);
E/[UV,Kx0 setContentView(R.layout.activity_main);
// 一些例如对view初始化工作略去51Testing软件测试网 ~6R BAf+H
'V)[Y)r'Y"y0 // 我们在这里设置View的layout的Id为layoutId_A51Testing软件测试网
Lch"g:jc.n5P}
currentContentFlag = ViewA; // 修改当前显示内容的flag,告诉这个setViewContent函数里面到底执行setViewA还是setViewB51Testing软件测试网t\5H[#YAh
setViewContent(R.layout.layoutId_A);
flCL:^0 }51Testing软件测试网{J*B
V.nOR
/**51Testing软件测试网%w(XcJ2E,sD
* 1.先看本函数
Y*@7h9B&_wY)]~0 */
v.Hxas0 private void setViewContent(int layoutId) {