在java / android中注册监听器,这是一个小问题

时间:2011-06-15 13:23:31

标签: java android user-interface

我想阅读有关处理UI事件的here。我非常了解java但仍然没有 有机会写一个gui所以我对听众不太了解。无论如何,他们使用 我之前从未遇到的一种技术,这就是我的意思

// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
  public void onClick(View v) {
    // do something when the button is clicked
  }
};

第一行代码让我困惑:它看起来像是一个新对象的声明,但随后 它的方法?我只是不明白这段代码,如果你能帮我理解,我可以继续我的任务:)

P.S。还有两个问题:如果我在屏幕上有几个按钮,它们都共享相同的onCLick()方法?如果是这样,我怎么知道哪一个被点击了?

谢谢!

2 个答案:

答案 0 :(得分:2)

嗨,你也可以这样写

public class testActivity extends Activity实现OnClickListener {

并添加这种方式......

ImageButton Ibutton = (ImageButton) findViewById(R.id.button_1);
Ibutton.setOnClickListener(this);      

ImageButton Ibutton2 = (ImageButton) findViewById(R.id.button_2);
Ibutton2.setOnClickListener(this);      


@Override
public void onClick(View v) {
switch(v.getId()){
    case R.id.button_1:
    // action to preform on button 1
        Toast.makeText(testActivity.this, "Button 1 pressed ", Toast.LENGTH_SHORT).show();
        break;
    case R.id.button_2:
    // action to preform on button 1
        Toast.makeText(testActivity.this, "Button 2 pressed ",     Toast.LENGTH_SHORT).show();
        break;
    }
}   

答案 1 :(得分:1)

由于每个视图都附加了单独的侦听器,因此每个事件都可以识别出它属于哪个视图

使用以下方法

step1 您的课程应该实现OnclickListener,例如

public class A implements OnClickListener

step2 将onclicklistener添加到所有按钮

button1 = (Button) findViewById(R.id.btn1);
button2 = (Button) findViewById(R.id.btn2);
button3 = (Button) findViewById(R.id.btn3);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);

step3 编写onClickMethod的实现

@Override
    public void onClick(View view) {
        if (view == button1) {
            //do button1 click action
        } else if (view ==button2) {

            //do button2 click action

        } else if (view == button3) {
//do button3 click action
        }