Android——UI事件的处理机制(基于监听器)
2016-03-27 21:48
771 查看
![](https://images2015.cnblogs.com/blog/848574/201603/848574-20160327214711167-146237403.jpg)
1.普通内部类(常用)
xml
<Button android:hint="reset" android:layout_columnWeight="1" android:id="@+id/reset"/>
java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); //第一种 设置监听器的实现类的实例 bt_reset.setOnClickListener(new ResetButtonClickListen()); } //1.用内部类实现监听器的接口 private class ResetButtonClickListen implements View.OnClickListener { public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); //在内部类里调用外部类的实例:外部类的类名.this Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show(); } } }
2.匿名内部类
java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); Button bt_reset = (Button)findViewById(R.id.reset); //第二种 匿名内部类 bt_reset.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); //在内部类里调用外部类的实例:外部类的类名.this Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show(); } }); }
3.外部类
java
public class MainActivity extends AppCompatActivity { //public class MainActivity extends AppCompatActivity implements View.OnClickListener { //bt_reset.setOnClickListener(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); //第三种 外部类 //bt_reset.setOnClickListener(new WaibuListener()); } }
java2
package com.example.chenshuai.test322; import android.view.View; import android.widget.Button; /** * Created by chenshuai on 2016/3/26. */ public class WaibuListener implements View.OnClickListener { public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); } }
4.直接绑到标签上
xml
<Button android:hint="send" android:layout_columnWeight="1" android:onClick="onclick"/>
java
public class MainActivity extends AppCompatActivity { //public class MainActivity extends AppCompatActivity implements View.OnClickListener { //bt_reset.setOnClickListener(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); //传递的View参数 是触发这个事件视图实例(在这里是Button) public void onclick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); Toast.makeText(this,str+"Button click",Toast.LENGTH_LONG).show(); } }
5.Avtivity直接实现
java
public class MainActivity extends AppCompatActivity implements View.OnClickListener { bt_reset.setOnClickListener(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gridexlayout); //添加监听器 //监听器 本身是一个接口,需要写实现类 Button bt_reset = (Button)findViewById(R.id.reset); } }
相关文章推荐
- Build.gradle详细配置说明
- Android UI 控件之TextView
- String,StringBuffer与StringBuilder的区别
- EasyUI中的Formatter
- java并发编程——九 AbstractQueuedSynchronizer AQS详解
- 在 Xamarin.Android 中使用 Notification.Builder 构建通知
- 《A Survey of Image Segmentation techniques》 Thakur 2014文章的阅读思维导图
- StringBuilder和StringBuffer类
- java中String类、StringBuffer类、StringBuilder类的区别(未完待续)
- Bzoj 1674: [Usaco2005]Part Acquisition dijkstra,堆
- 在do while语句中使用continue的误解
- UI控件--ViewPager详解(1)
- Xcode常见崩溃问题
- An asset is marked with HideFlags.DontSave but is included in the build:
- The JSP specification requires that an attribute name is preceded by whitespace
- 新一代列式存储格式Parquet
- csuoj-1715-Positive Con Sequences
- weblogic对jms实现的QueueConnection实现与TopicConnection实现问题
- Codeforces--618B--Guess the Permutation(规律)
- 63. Unique Paths II