在onClick(View v)方法中接受这个关键字



我是新的Android环境我只是想知道为什么OnClick(View v)方法接受this如果所需的参数是在类型View和我的方法扩展Activity ?ViewActivity之间有关系吗?请参考代码使问题更清楚。

...
public class MainActivity extends Activity implements OnClickListener {
    private Button btn1;
    private Button btn2;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        ...
        btn1 = (Button)findViewById(R.id.button1);
        btn2 = (Button)findViewById(R.id.button2);
        // Below are the methods calling which confuses me
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        ...
    }
    public void onClick(View v) {
        int id = v.get();
        switch(id) {
            case R.id.button1:
                //statement for button1
            case R.id.button2:
                //statement for button2
        ...
        }
    }
}

EDIT:这个问题是误导性的,只是由于忽略了'setOnClickListener(…)'与'onClick(…)'相同。我只是不知道如何结束这个问题

看,

先理解这两行

View.OnClickListener - Interface definition for a callback to be invoked when a view is clicked.
onClick() - Called when a view has been clicked.

,
你的活动是实施OnClickListener

   public class MainActivity extends Activity implements OnClickListener{}

所以当你实现那个。有一个自动实现到类的方法叫做onClick()

所以当你传递this关键字给任意视图的onClickListener。这意味着你实际上是在调用onClick()方法。

btn1.setOnClickListener(this); //calling onClick() method for button1
btn2.setOnClickListener(this); //calling onClick() method for button2
onClick()方法中


你只需要找到你的ID并为你想对视图做的事情编写代码。

public void onClick(View v){
int id=v.get(); // getting ID of Clicked View
switch(id){
case R.id.button1:
    //called when you press button 1
    //write your code 
    break;
case R.id.button2:
    //called when you press button 2
    //write your code 
    break;
...
}

有关onClickListener()的详细信息,请访问此网站/博客https://stand2code.blogspot.in/2016/12/multiple-buttons-onclicklistener-android.html

您正在扩展Activity,但您也在实现OnClickListener,而onClick()OnClickListener接口的方法。因此,您必须在class中实现其onClick方法,因此this不会引发任何冲突。对于一个接口,除了拥有正确的方法之外,还有什么比

更重要的吗?

setOnClickListenerOnClickListener实例为参数,OnClickListener是包含onClick()方法的接口。

参数必须是实现OnClickListener接口的某个对象的实例当你在这里传递setOnClickListener(this);当前上下文时。

Android -如何在button.setOnClickListener()中设置一个命名方法

相关内容

最新更新