在onClick事件中查看概念

时间:2014-05-21 22:49:26

标签: java android

@覆盖     public void onClick(查看arg0)

在这......我们引用的视图是什么。它是指相应布局中的所有按钮吗?请深入解释。谢谢。

6 个答案:

答案 0 :(得分:1)

onClick方法的参数是指按下单击/按下的视图。这可以是Button,TextView,ImageView等等。根据文档,特别是本主题:Responding to Click Events,此方法必须:

  • public
  • 返回 void
  • 视图定义为唯一参数这将是被点击的视图

因为你按如下方式调用了一个监听器:

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
     }
}