我正在为Android游戏项目编写此代码:
public class GameActivity extends Activity implements OnClickListener {
Button b1 = null;
Button b2 = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
b1 = new Button(this);
b2 = new Button(this);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// how parameter "v" got its value.,
// and where it was initialized???
}
}
我注意到onClickListener的onClick(View v)
方法,
并想问一下参数“View v”在哪里初始化?
我知道它包含了点击视图的参考,但是在哪里和
它是如何获得价值的?
同样的问题:
public void actionPerformed(ActionEvent e){
// where/how it initialized "e" ??
}
答案 0 :(得分:5)
onClick
和actionPerformed
都是回调方法,这意味着Android操作系统会调用它们,并将它们的参数传递给它们。
答案 1 :(得分:0)
当用户触摸屏幕时,Android有自己的处理程序/缓冲区来处理坐标(x和y)并检测视图。每个视图都有自己的WindowManager注册的窗口令牌,它将回调处理回onClick(视图v);
答案 2 :(得分:0)
只需查看代码:
由于Button
是View
的子类,因此您可以通过使用View v
实现按钮来创建Button b1 = new Button(this);
参数
当你调用setOnClickListener
时,你注册了一个应该执行的回调方法(在View对象上)。 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/view/View.java#4379
真正的点击是在方法performClick()
中执行的。此方法从onclick侦听器方法读取您注册的onclick(View v)并执行它。
您还可以查看观察者模式。