本文共 6859 字,大约阅读时间需要 22 分钟。
按钮绑定监听器的几种方式:
A:采用内部类的形式 1.自己创建一个内部类,实现OnClickListener接口,重写里面的onClick()方法. 2.在使用的地方创建一个内部类对象. 3.用button对象通过setOnClickListener(监听器对象)方法绑定监听器对象.public class MainActivity extends Activity{ private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); MyListenner listenner = new MyListenner(); //按钮绑定监听器 button.setOnClickListener(listenner); } //按钮的监听器是一个接口,所有不能直接创建对象 class MyListenner implements OnClickListener{ //当控件(在这里就是按钮)被点击当时候,会调用的方法 //v:事件源(谁触发了点击这个事件,谁就是事件源) 指代:当前被点击的按钮 @Override public void onClick(View v) { //TODO 做点击按钮要做的事 button.setText("点击了按钮"+new Date()); } }}
B.用当前类实现接口
1.用当前activity实现OnClickListener接口,重写里面的onClick()方法. 2.用button对象通过setOnClickListener(this)绑定监听器对象(当前的类对象).public class MainActivity extends Activity implements View.OnClickListener{ private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View v) { button2.setText("用当前的类实现监听器"+new Date()); }}
C.采用匿名内部类的方式
1.用button对象通过setOnClickListener(创建接口的匿名内部类对象)绑定静听器对象.public class MainActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @override public void onClick(View v) { button.setText("用匿名内部类的方式" + new Date()); } }); }
D.以属性的形式
1.在布局文件中,button的属性里定义onClick=”方法名” 2.在代码中声明格式是固定的: public void 方法名(View v) { 方法体; } 布局文件中写法:代码:
public class MainActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); } //格式是固定的 public void btnOnClick(View v) { button.setText("以属性的方式改变内容" + new Date()); }}
多个按钮同时绑定一个监听器:
A.采用内部类的形式:绑定监听器的时候,传同一个对象. B.用当前类实现接口:绑定监听器的时候都传 this. C.以属性的形式:写属性的时候onClick的值都写同一个方法名采用内部类的形式:
public class SecondActivity extends Activity{ private Button btnChangColor,btnChangeText; private LinearLayout layout; private Random random;//获取随机数的类 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); btnChangColor = (Button) findViewById(R.id.btnChangColor); btnChangeText = (Button) findViewById(R.id.btnChangeText); layout = (LinearLayout) findViewById(R.id.layout); random = new Random(); CommonLis listener = new CommonLis(); btnChangColor.setOnClickListener(listener); btnChangeText.setOnClickListener(listener); } class CommonLis implements OnClickListener{ @Override public void onClick(View v) { int id = v.getId(); switch (id) { //改变背景颜色的按钮 case R.id.btnChangColor: //ff 255 int red = random.nextInt(256);//[0,255] int green = random.nextInt(256); int blue = random.nextInt(256); //设置背景颜色 layout.setBackgroundColor(Color.rgb(red, green,blue)); break; //改变文本信息的按钮 case R.id.btnChangeText: btnChangeText.setText("改变文本信息"+new Date()); //Toast Context:activity是它的子类 吐司要显示的内容 吐司显示的事件 Toast.makeText(SecondActivity.this, "改变的文本信息"+new Date(), 1).show(); break; default: break; } } }}
用当前类实现接口的形式:
public class SecondActivity extends Activity implements OnClickListener{ private Button btnChangColor,btnChangeText; private LinearLayout layout; private Random random = new Random();//获取随机数的类 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); btnChangColor = (Button) findViewById(R.id.btnChangColor); btnChangeText = (Button) findViewById(R.id.btnChangeText); layout = (LinearLayout) findViewById(R.id.layout); btnChangColor.setOnClickListener(this); btnChangeText.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { //改变背景颜色的按钮 case R.id.btnChangColor: //ff 255 int red = random.nextInt(256);//[0,255] int green = random.nextInt(256); int blue = random.nextInt(256); //设置背景颜色 layout.setBackgroundColor(Color.rgb(red, green,blue)); break; //改变文本信息的按钮 case R.id.btnChangeText: btnChangeText.setText("改变文本信息"+new Date()); //Toast Context:activity是它的子类 吐司要显示的内容 吐司显示的事件 Toast.makeText(SecondActivity.this, "改变的文本信息"+new Date(), 1).show(); break; default: break; } }}
以属性的方式:
public class SecondActivity extends Activity implements OnClickListener{ private Button btnChangColor,btnChangeText; private LinearLayout layout; private Random random = new Random();//获取随机数的类 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); btnChangColor = (Button) findViewById(R.id.btnChangColor); btnChangeText = (Button) findViewById(R.id.btnChangeText); layout = (LinearLayout) findViewById(R.id.layout); } public void btnSure(View v) { int id = v.getId(); switch (id) { //改变背景颜色的按钮 case R.id.btnChangColor: //ff 255 int red = random.nextInt(256);//[0,255] int green = random.nextInt(256); int blue = random.nextInt(256); //设置背景颜色 layout.setBackgroundColor(Color.rgb(red, green,blue)); break; //改变文本信息的按钮 case R.id.btnChangeText: btnChangeText.setText("改变文本信息"+new Date()); //Toast Context:activity是它的子类 吐司要显示的内容 吐司显示的事件 Toast.makeText(SecondActivity.this, "改变的文本信息"+new Date(), 1).show(); break; default: break; } }}
转载地址:http://vzsni.baihongyu.com/