我想阅读有关处理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()方法?如果是这样,我怎么知道哪一个被点击了?
谢谢!
答案 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
}