@覆盖 public void onClick(查看arg0)
在这......我们引用的视图是什么。它是指相应布局中的所有按钮吗?请深入解释。谢谢。
答案 0 :(得分:1)
onClick
方法的参数是指按下单击/按下的视图。这可以是Button,TextView,ImageView等等。根据文档,特别是本主题:Responding to Click Events,此方法必须:
因为你按如下方式调用了一个监听器:
textview.setOnClickListener(this);
您将使用此方法:
public void onClick(View view) { ... }
正如我所说,View view
参数指的是之前点击过的元素。附加到此侦听器的每个视图都包含在此参数中。
但是,要了解已单击哪个视图并执行某些操作,您可以使用getId()
方法检索确切的视图:
@Override
public void onClick(View view) {
if(view.getId() == R.id.text1) {
// do something when textview is clicked
} else {
// do something else for all the views attached to this listener...
}
}
答案 1 :(得分:0)
public void onClick(查看arg0)
点击视图时调用。
参数 arg0被点击的视图。
答案 2 :(得分:0)
View参数将是用户正在触摸的视图。所以你可以从那个方法中访问它。你在这里引用http://developer.android.com/reference/android/view/View.OnClickListener.html#onClick(android.view.View)
答案 3 :(得分:0)
这是View类的公共方法。如果你的类实现了OnClickListener,你可以使用这样的东西(例如在你的Activity的onCreate方法中):
Button yourButton = (Button) findViewById(R.id.your_button_id);
yourButton.setOnClickListener(this);
为yourButton设置点击监听器。在这种情况下,单击yourButton时,onClick中的视图arg0将是yourButton。在onClick中你可以这样做:
switch(arg0.getId()){
case R.id.your_button_id:
// do stuff
break;
//repeat for other buttons
}
这允许您在类中为多个按钮设置单击侦听器。您所要做的就是将Click侦听器上的类设置为按钮,方法与对按钮的操作方式相同。
答案 4 :(得分:0)
你是部分正确这个视图意味着上下文中的布局,但是这个onClick的所有目的都是如此通用,你不必为视图中的每个按钮编写onClick,你可以在这个按钮上设置按钮,就像这样和
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
像这样称呼它
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
if(v == btn1)
{
//Things to do
}
if(v == btn2)
{
//Things to do
}
if(v == btn3)
{
//Things to do
}
}
而不是做这样的事情
private OnClickListener button1ClickListener = new View.OnClickListener()
{
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button1);**
handleButtonClick(button);
}
};
private OnClickListener button2ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button2);**
handleButtonClick(button);
}
};
private OnClickListener button3ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button3);**
handleButtonClick(button);
}
};
private OnClickListener button4ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button4);**
handleButtonClick(button);
}
};
答案 5 :(得分:0)
正如其他人所说,传递给回调的视图是对被点击的视图的引用。您可以使用相同的onClick
方法拥有多个按钮。所以有一件有用的事情就是:
public void onClick(View view)
{
switch(view.getId())
{
case R.id.my_cool_button:
//do some cool stuff
break;
default:
//who knows what button was pressed
}
}