监听点击事件实现的三种方法:1、匿名内部类2、外部类3、直接实现接口
1.匿名内部类:
package com.jereh.calculator; import android.content.Context; import android.os.Bundle; import android.os.PersistableBundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.util.Date; public class MarqueeActivity extends AppCompatActivity { private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_marquee); button1 = (Button)findViewById(R.id.buttonl); button1.setOnClickListener(new OnclickListener() { // 匿名内部类实现了OnclickListener接口的方法 @Override public void onClick(View v) { super.onClick(v); Toast.makeText(MarqueeActivity.this,"内部实现方法",Toast.LENGTH_LONG).show(); } }); } }
2、外部类:
package com.jereh.calculator; import android.content.Context; import android.os.Bundle; import android.os.PersistableBundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.util.Date; public class MarqueeActivity extends AppCompatActivity { private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_marquee); button1 = (Button)findViewById(R.id.buttonl); button1.setOnClickListener(new OnclickListener1() { // 匿名内部类实现了OnclickListener接口的方法 //传进一个外部类,并且重写了OnclickListener1的方法,作用就是体现在对onClick(View v)的功能扩展 @Override public void onClick(View v) { super.onClick(v); Toast.makeText(MarqueeActivity.this,"内部实现方法",Toast.LENGTH_LONG).show(); } }); } } //外部类,实现了View.OnClickListener的接口中的方法 class OnclickListener1 implements View.OnClickListener { @Override public void onClick(View v) { Log.v("lol", new Date().toString()); } }
3、直接实现接口
做点击事件监听,大部分使用匿名内部类,其他两种写法能做到的事情它都能做到,其他不能实现的事情它也可以做到