Android开发之View点击事件:三种方式实现OnClickListener接口

OnClickListener是Android监听器中的一种,下面介绍三种方式实现OnClickListener接口监听器。其中第二第三种分别有两种方法:

1、实现匿名内部类。
这是最简单也最直接的方式
注意:
这种方法适合只希望对监听器进行一次性使用的情况,当按钮较少或只有一个按钮时,可以直接创建OnClickListener的匿名内部类传入按钮的setOnClickListener参数中,在该代码块运行完毕之后,该监听器也就不复存在了。

final Button button01=(Button)findViewById(R.id.button01);//后面的button01为你在activity xml中设定的按钮id button01.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Toast.makeText(MainActivity.this,'点击了Button!!!',Toast.LENGTH_LONG).show(); } });

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、new一个该监听器(OnClickListener)的对象或在创建一个内部类实现OnClickListener接口并重写onClick方法:

  1. new对象方式:

    final ImageButton imagebutton01=(ImageButton)findViewById(R.id.imagebutton01);后面的imagebutton01为你在activity xml中设定的按钮id
    ImageButton.OnClickListener buttonListener= new ImageButton.OnClickListener() {
    public void onClick(View v) {
    Toast.makeText(MainActivity.this,'点击了图片按钮!!!',Toast.LENGTH_LONG).show();
    }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:
    这里你使用的按钮组件是那个,你就以此new他的OnClickListener对象。如上,我使用的是imagebutton图片按钮组件,我就以imagebutton调用OnClickListener来new对象。

  2. 内部类

    Button button01=(Button) findViewById(R.id.button01);//后面的button01为你在activity xml中设定的按钮id button01.setOnClickListener(new MyButton()); private class MyButton implements View.OnClickListener{ @Override public void onClick(View v) { Toast.makeText(MainActivity.this,'点击了Button!!!',Toast.LENGTH_LONG).show(); } }

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意:
    以上两个实现的监听器在onCreate(Bundle savedInstanceState)方法中的调用都是一样的,即,使用xxxx.setOnClickListener()方法。(xxxx为调用对象)

3、通过onClick属性自定义public方法实现或主类中实现OnClickListener接口,需要重写onclick():

  1. 通过onClick属性自定义public方法实现:
    在MainActivity.java中添加

    public void myClick(View v){
    Toast.makeText(MainActivity.this,'点击了Button!!!',Toast.LENGTH_LONG).show();
    }
    
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    在activity_mian.xml中的需要调用监听器的组件标签内添加:

    android:onClick='myClick'

    • 1
    • 1

    注意:
    该方法不同于前面两种方式代码是放在onCreate(Bundle savedInstanceState)方法中,该方法需要在onCreate()方法外声明并定义,同时,如果方法内使用了组件对象(如Button对象),需要把该对象定义为全局变量才能使用。且该方法必须是public方法。

  2. 主类中实现OnClickListener接口,并重写onclick():

    protected void onCreate(Bundle savedInstanceState) {
    //这里省略前面已存在的代码
    //创建对象
    Button button01=(Button) findViewById(R.id.button01);
    //按钮绑定接口
    button01.setOnClickListener(this);
    }
    //在重载的方法中实现点击设置
    @Override
    public void onClick(View v) {
    Toast.makeText(MainActivity.this,'点击了Button!!!',Toast.LENGTH_LONG).show();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    注意:
    这个方法虽然不需要在activity_mian.xml添加字段,但需要在MainActivity主类中实现View.OnClickListener接口,即在public class MainActivity extends AppCompatActivity后添加implements View.OnClickListener,一般没有实现上述按钮绑定接口的this处会报错,点击解决方法即可自动添加。

(0)

相关推荐