Java侦听器方法参数

时间:2014-11-04 08:45:19

标签: java android

我正在为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" ??
}

3 个答案:

答案 0 :(得分:5)

onClickactionPerformed都是回调方法,这意味着Android操作系统会调用它们,并将它们的参数传递给它们。

答案 1 :(得分:0)

当用户触摸屏幕时,Android有自己的处理程序/缓冲区来处理坐标(x和y)并检测视图。每个视图都有自己的WindowManager注册的窗口令牌,它将回调处理回onClick(视图v);

答案 2 :(得分:0)

只需查看代码:

请参阅http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/view/View.java#3436如何创建View对象

由于ButtonView的子类,因此您可以通过使用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)并执行它。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/view/View.java#4432

您还可以查看观察者模式。