为什么(this)在setOnClickListener()中使用

时间:2018-04-04 08:45:25

标签: java android oop this

请解释原因,下面的代码(this)被用作setOnClickListener()的参数?如果你能解释我感谢的总代码,我是编码新手。

public class MainActivity extends Appcomatactivity implements 
        View.OnClickListner {

  Textview textview;
  Button push_me, push_me2;

  protected void onCreate(bundle savedInstance) {
    super.onCreate(savedInstance);
    setContentView(R.Layout.activity_main);
    textview = (Textview)findViewById(R.Id.Textview);
    push_me=(Button)findViewById(R.Id.pushmebutton);
    push_me2=(Button)findViewById(R.Id.pushmebutton2);

    // Why does below code use (this) as argument?
    push_me.setOnClickListener(this);
    push_me2.setOnClickListener(this);
  }
  // <...some activity methods...>

  // onclick method defined:
  public void onClick(View view) {
    switch(view.getid()) {
      case R.Id.pushmebutton:
        textview.setText("button 1 clicked");
        break;
      case R.id.pushmebutton2:
        textview.setText("button 2 clicked");
        break;
    }
  }
}

2 个答案:

答案 0 :(得分:1)

  

为什么(this)在setonclicklistner中使用

因为您已为活动实施了View.OnClickListener界面

View.OnClickListener 单击视图时要调用的回调的接口定义。

使用此 push_me.setOnClickListener(this); ,您已在视图中注册了点击监听器

答案 1 :(得分:0)

当我们不想使用匿名类时,我们使用win = new BrowserWindow({ width: 378, height: 566, show: true, webPreferences: { webSecurity: false, plugins: true } }); // load PDF win.loadURL('file://' + __dirname + '/header1_X_BTR.pdf'); // if pdf is loaded start printing win.webContents.on('did-finish-load', () => { win.webContents.print({silent: true, printBackground:true}); }); 其他方式是使用匿名内部类

print({silent:true})

如果有多个按钮需要在onClick事件上执行相同的代码,那么您可以将侦听器定义为对象并将其传递给它们。